JWT Re-auth – automatyczne odświeżanie sesji

my127001.pl 1 rok temu

Burp Suite nie radzi sobie z automatycznym odświeżaniem sesji, jeżeli taka sesja jest przechowywana w nagłówku, a nie w plikach cookie. Jest to istotne z uwagi na to, iż 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 choćby 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 manualnie):

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

Idź do oryginalnego materiału