06-10-2019 / Burp

BURP - Jak stworzyć makro do odświeżania sesji?

Załóżmy, że przeprowadzasz test penetracyjny strony X.

Do wysyłania żądań wykorzystujesz narzędzie „Repeater” wbudowane w pakiet Burp.

Niestety, czas życia sesji na witrynie ustawiony jest na bardzo niską wartość.

To sprawia, że co chwilę zostajesz automatycznie wylogowany.

Żeby kontynuować swoją pracę musisz się ponownie zalogować.

Potem należy jeszcze skopiować wartość nowego ciasteczka do starego żądania.

Cała ta procedura nie jest trudna ale żmudna.

Zwłaszcza jeżeli musisz ją wykonywać raz na kilka minut.

Prosta strona logowania

Ale proces ten można zautomatyzować przy użyciu makr wbudowanych w Burpa.

Popatrzmy na przykład.

Widzimy tutaj prostą stronę do logowania.

Po podaniu loginu i hasła wyświetla się nasz identyfikator sesji.

Sesja wygasa po 2 sekundach

W tym przerysowanym przykładzie nasza sesja wygasa po 2 sekundach.

Wtedy otrzymujemy formularz logowania.

Logując się ponownie, widzimy zmieniony identyfikator.

Zmieniony identyfikator

Dzięki temu wiemy, że z punktu widzenia serwera wykorzystujemy zupełnie inną sesje.

Spróbujmy zautomatyzować cały proces.

Zakładka sessions

W tym celu przechodzimy do zakładki Project options a następnie Sessions.

Tworzymy nową regułę klikając na przycisk Add.

Możemy ją odpowiednio nazwać dla przejrzystości.

Reguła może składać się z wielu akcji.

Reguła Check session is valid

Nas interesuje ta nazwana: Check session is valid.

Teraz musimy ustalić, kiedy nasza sesja nie jest ważna.

W tym celu będziemy próbowali znaleźć specyficzny ciąg znaków w odpowiedzi serwera.

W naszym przypadku, jeżeli serwer zwraca formularz do logowania oznacza to, ze zostaliśmy wylogowani.

Będziemy więc poszukiwać pola o nazwie Zaloguj.

Ciąg znaków kiedy sesja wygasa

Kiedy tylko takie pole zostanie odnalezione, chcemy automatycznie wykonać jakąś akcję.

W tym wypadku zalogować się.

Uruchom makro, gdy sesja wygasła

Użyjemy makra – czyli zestawu żądań przesyłanych do strony.

Z wcześniej przesłanych przez nas żądań wybieramy to, w którym wypełniamy formularz logowania.

Wybór żądania do logowania

I to wszystko.

Ostatnim krokiem jest ustalenie zakresu – czyli zdefiniowanie kiedy cała ta procedura ma się wykonywać.

My chcemy korzystać z niej jedynie w Repeaterze.

Dodatkowo, dotyczy ona tylko jednej, konkretnej domeny.

Zakres, kiedy makro działa

Teraz możemy przetestować całość w praktyce.

Nie zawsze cały schemat zadziała od razu.

Aby sprawdzić jego działanie krok po kroku warto w celach diagnostycznych otworzyć okno Sessions tracker.

Teraz usuwamy wcześniejsze ciasteczko z naszego żądania.

Okno sessions tracker

Jak widzisz w odpowiedzi otrzymaliśmy identyfikator sesji.

Patrząc w szczegóły widzimy, że Burp rozpoznał iż sesja jest nieprawidłowa więc wysłał do serwera dodatkowe żądanie, które ustaliliśmy w szczegółach makra.

Wynikowe ciasteczko zostało automatycznie dołączone do naszego żądania.

W przypadku gdy sesja nie zdążyła jeszcze wygasnąć, Burp nie odnalazł ciągu Zaloguj więc stwierdził iż wszystko jest w porządku, kończąc całą procedurę bez dodatkowych żądań.

Wszystko szybko, prosto i przyjemnie przy użyciu paru kliknięć.

A to tylko początek mocy kryjącej się w makrach.