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):

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:

Kolejno dodajemy do zakładki scope adresy, pod jakimi chcemy, żeby wtyczka doklejała token autoryzacyjny:

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