Burp Suite nie radzi sobie z automatycznym odświeżaniem sesji, jeśli taka sesja jest przechowywana w nagłówku, a nie w plikach cookie. Jest to istotne z uwagi na to, że często tokeny JWT (JSON Web Tokens) mają krótki czas życia, co wynika z konieczności zapewnienia bezpieczeństwa przetwarzanych danych. W efekcie, próba uruchomienia automatycznych skanów po kilku wysłanych żądaniach często kończy się odpowiedzią serwera z kodem błędu 401 oraz komunikatem o wygaśnięciu ważności tokena.
W takich sytuacjach pomocna może być wtyczka ATOR, która umożliwia wykrywanie nieważnych sesji i automatyzację procesu logowania w celu uzyskania nowego tokena autoryzacyjnego. Niestety istnieją przypadki, w których nawet ta wtyczka może nie być wystarczająca. Przykładowo, może to mieć miejsce, gdy aplikacja podczas procesu logowania wymaga rozwiązania testu CAPTCHA, lub gdy sam proces logowania jest wieloetapowy i wymaga wprowadzenia pewnych unikalnych wartości generowanych dynamicznie przez kod JavaScript na stronie internetowej.
Ostatnio odkryłem rozwiązanie tego problemu, którym chciałbym się z Tobą podzielić. Jest nim rozszerzenie do Burp Suite, stworzone przez NCC Group i nazwane JWT Re-auth. To narzędzie umożliwia automatyczne wysyłanie żądań odpowiedzialnych za odświeżanie sesji, a co ważniejsze, jest w stanie wykryć takie żądania, gdy zostaną one wysłane w tle przez przeglądarkę. Następnie może ono wyciągnąć z tych żądań nowy token sesyjny i dokleić go do żądań w miejscach, które wcześniej zdefiniowaliśmy.
Wystarczy przez menu kontekstowe wysłać żądanie odpowiedzialne za odświeżanie sesji przesłać do wtyczki (albo wpisać adres ręcznie):
![JWT Re-auth menu](https://sp-ao.shortpixel.ai/client/to_auto,q_lossy,ret_img,w_1024,h_613/https://my127001.pl/wp-content/uploads/2023/09/image-1024x613.jpg)
Następnie należy zdefiniować, jak nazywa się nagłówek, z tokenem sesyjnym oraz uzupełnić wyrażenie regularne, które jest odpowiedzialne za znajdywanie tokenu w odpowiedzi serwera:
![JWT Re-auth options](https://sp-ao.shortpixel.ai/client/to_auto,q_lossy,ret_img,w_1024,h_613/https://my127001.pl/wp-content/uploads/2023/09/image-1-1024x613.jpg)
Kolejno dodajemy do zakładki scope adresy, pod jakimi chcemy, żeby wtyczka doklejała token autoryzacyjny:
![JWT Re-auth scope](https://sp-ao.shortpixel.ai/client/to_auto,q_lossy,ret_img,w_840,h_503/https://my127001.pl/wp-content/uploads/2023/09/image-1024x613.png)
Ostatnim krokiem jest uruchomienie w przeglądarce jakieś wtyczki, która co określony czas (taki jak życie sesji) będzie odświeżała kartę, żeby wywołać żądanie o odświeżenie sesji.
Wtyczkę można znaleźć na Githubie NCC Group