Chodź narzędzie Burp Suite posiada wbudowany mechanizm obsługi sesji, coraz częściej spotykam się z sytuacjami, gdzie po prostu sobie nie radzi z utrzymaniem jej aktywnej. Jest to najczęściej spowodowane jednym z poniższych czynników:
- dynamiczne tokeny CSRF ukryte w różnych miejscach requestu;
- aplikacje oparte na JavaScript (React, Angular) i interfejsy API używające tokenów uwierzytelniających;
- specyficzne wartości nagłówka zamiast ciasteczek (np. JWT);
- stosowanie podwójnych tokenów (tokeny dostępu / odświeżania), głównie w aplikacjach mobilnych;
Niedawno wpadłem na świetną wtyczkę, która znacząca ułatwia przeprowadzenie automatycznych skanów. Przetestowałem ją między innymi w scenariuszu z tokenem JWT (OAuth 2.0 / bearer token), który zmienia się co kilka minut i z czystym sumieniem mogę polecić.
Skrócony instrukcja użycia, wygląda następująco:
- Łapiemy żądanie odpowiedzialne za logowanie (w odpowiedzi, którego uzyskujemy bearer token) i wysyłamy go do ATORa.
- Wybieramy z odpowiedzi ciąg, który nas interesuje i nadajemy mu jakąś nazwę.
- Podajemy w jaki sposób wtyczka może zidentyfikować, że sesja została „zabita”.
- Wskazujemy wzór według, którego w nowych żądaniach ma zostać zastąpiony nasz token sesyjny. Używamy tutaj wyrażeń regularnych. Warto je wcześniej przetestować na stronie regexr .
- Jeżeli korzystamy z dodatkowych wtyczek przy automatycznym skanowaniu, należy zaznaczyć to w ustawieniach ATORa.
Wtyczkę można znaleźć na Githubie synopsys