Jakie podstawowe narzędzie najbardziej kojarzy ci się z testowaniem oprogramowania w kontekście aplikacji internetowych? Jeżeli twoja odpowiedź brzmi „przeglądarka”, to koniecznie przeczytaj poniższy artykuł. Z użyciem Burp Suite poznasz nowe możliwości, które bardzo ułatwią twoją pracę. Pamiętaj, że Burp jest głównie przeznaczony do testów bezpieczeństwa, natomiast odpowiednio użytkowany będzie świetnym pomocnikiem w testach, które wykonujesz na codzień.

 

Czym jest Burp Suite?

Krótko rzecz ujmując, Burp – podobnie jak inne tego typu narzędzia np. Fidler, Tamper, ZAP – działa jako lokalne proxy, które pozwala ci przechwytywać zapytania wysyłane do serwera. Jego główną zaletą jest fakt, że requeast przechwycony w ten sposób, możesz zmodyfikować poza przeglądarką. Mamy więc do czynienia z konfiguracją podobną jak przy ataku Man in the Middle:

Request flow

Z tym, że w tym konkretnym przypadku to my wysyłamy zapytanie z poziomu przeglądarki, jak i w następnym kroku na proxy. Dlaczego więc uważam, że jest to aż tak fajne? Chodzi o to, czego nie możemy zrobić w przeglądarce (lub nie możemy zrobić w prosty sposób), a możemy krok dalej. Wyobraź sobie następujący przypadek – masz pole tekstowe (załóżmy rok urodzenia), które według dokumentacji powinno przyjmować jedynie cyfry. Podczas testów zgłaszasz niezgodność z wymaganiami, ponieważ użytkownik może wprowadzać dowolne znaki. 10 min później programista informuje cię, że problem został rozwiązany, poprzez wprowadzenie walidacji jakąś wtyczką jQuery. Próbujesz wpisywać dziwne znaki we wspomniane pole, ale nic poza cyframi nie przechodzi – mało tego, dorzucił nawet od siebie czerwoną ramkę dookoła pola, tak aby poprawić user experience. Z radością zamykasz zgłoszony błąd, ponieważ wymagania są spełnione… nie, nie są. Walidacja tego typu jest świetna, ale jako dodatkowa warstwa, a ponieważ działa ona po stronie klienta to jest dobra pod kątem wydajnościowym (nie odpytuje za każdym razem serwera) i jest bardzo wygodna dla użytkowników (szybka informacja zwrotna, bez przeładowania strony) – natomiast jeżeli zostanie zastosowana jako jedyny sposób filtrowania danych, to w praktyce nie chroni przed niczym. Pamiętasz, że w tej konfiguracji, modyfikujemy zapytanie poza przeglądarką, ale jeszcze przed wysłaniem do serwera? Wobec tego nic nie stoi na przeszkodzie, żeby przez walidację w przeglądarce puścić prawidłowe dane, które zmienię krok dalej, na nieprawidłowe i wepchnę je np. do bazy danych. W kolejnych częściach artykułu znajdziesz inne praktyczne przykłady zastosowania.

 

Jak mogę wejść w posiadanie Burpa?

Zacznijmy o tego, że masz dwie opcje do wyboru. Pierwsza to wersja darmowa (która na początek – co ważne, do testów manualnych – powinna ci w zupełności wystarczyć) i możesz ją pobrać bezpośrednio tutaj (sama aplikacja jest napisana w Javie, w związku z czym wsparcie dla różnych systemów nie było problemem):

https://portswigger.net/burp/freedownload

A dla osób, które mają wolne 349$/rok (na dzień dzisiejszy), producent przewidział wersję PRO do kupienia bezpośrednio tutaj:

https://portswigger.net/buy

Pytanie, które teraz chcesz prawdopodobnie zadać, to czy warto dopłacać ponad tysiąc zł/rok za wersje PRO. A odpowiedź standardowo brzmi „to zależy” – w mojej personalnej opinii tak, jeżeli nauczysz się wykorzystywać możliwości tego narzędzia. A to, czym konkretnie różni się wersja płatna, od darmowej zaznaczę przy omawianiu wybranych funkcjonalności w dalszej części tekstu.

 

Konfiguracja Burp Suite

Załóżmy, że proces pobierania i instalacji masz już za sobą – odpal Burpa, a zobaczysz nastepujące okienko:

 

Burp konfiguracja - nowy projekt

Tu znajdziesz pierwszą różnicę między wersjami – w wersji darmowej będziesz miał do wyboru tylko opcję projektu tymczasowego – pozostaje ci używanie go na maszynie wirtualnej, lub nie wyłączanie komputera 😉 Przejdźmy dalej

Burp konfiguracja - ładowanie konfiguracji

Z kolei na tym widoku, masz możliwość zaimportowania swoich ulubionych ustawień Burpa (np. rozszerzenia), jeżeli udało ci się je kiedyś zapisać. W wypadku kiedy nie masz jeszcze swojej konfiguracji wciśnij po prostu „Start Burp”

Burp konfiguracja - ekran startowy

W taki właśnie sposób prezentuje się Burp – ale podobnie jak w grach, które należy cenić za grywalność a nie grafikę, tak samo tutaj część funkcjonalna jest bardziej imponująca niż aspekty wizualne (należy powiedzieć to wprost – Burp pod względem wizualnym i user experience jest tragiczny, ale jak już przejdziesz nad tym do porządku dziennego, to będzie ci się z nim świetnie współpracować). Kliknij teraz w tab „Proxy” a następnie „Options”

Burp konfiguracja - ustawienia proxy

Powinieneś mieć na liście proxy domyślnie dodaną wartość 127.0.0.1:8080 (twój localhost, na porcie 8080) – co ważne, po lewej stronie powinieneś mieć zaznaczony checkbox running. Jeżeli checkbox nie jest zaznaczony to oznacza, że inna usługa jest aktualnie uruchomiona na porcie 8080 – możesz zmienić ten port na proxy, lub wyłączyć usługę. Jeżeli wszystko jest tak jak na screenshocie powyżej, to przejdź do kolejnego kroku.

Otwórz swoją przeglądarkę i wejdź w ustawienia proxy (w przypadku Firefoxa Menu -> Preferencje -> Zaawansowane -> Sieć -> Połączenie | Ustawienia

Burp konfiguracja - proxy w przeglądarce

Wybierz „Ręczną konfigurację serwerów proxy” i w polu „Serwer proxy HTTP” wprowadź tę samą wartość, co w Burpie – w moim przypadku 127.0.0.1:8080. Potwierdź wszystko przyciskiem OK, a następnie wejdź na jakąkolwiek stronę internetową w przeglądarce. Nie ładuje się? To dobrze, oznacza to, że wszystko zadziałało, a twój request został złapany przez Burp’a i oczekuje aż wykonasz na nim jakąś akcję. Wróć w takim razie do Burp’a a zobaczysz, że zakładka Proxy -> Intercept jest podświetlona na pomarańczowo

Burp konfiguracja - przechwytywanie requestu

Na górze sekcji możesz znaleźć kilka przycisków:

Forward – spowoduje przesłanie zapytania (zmodyfikowanego, lub nie) dalej do serwera

Drop – spowoduje odrzucenie zapytania bez przekazywania go dalej

Intercept on/off – jest to przycisk typu toggle za pomocą którego, możesz zadecydować czy zapytania z przeglądarki mają być przychwytywane

Action – akcje, które możesz wykonać na danym zapytaniu np. wysłanie do innego modułu Burpa. (Protip: to samo menu zobaczysz, kiedy klikniesz prawym przyciskiem mysze na treści requestu)

Gratulacje, konfiguracja Burpa zakończona pomyślnie 🙂

 

Mapowanie celu

Potrafisz już prawidłowo skonfigurować Burpa, oraz „łapać” zapytania do serwera – warto wiedzieć, że podczas takiego procesu Burp automatycznie tworzy sobie mapę serwisu, który aktualnie testujesz. Obecną strukturę (którą udało mu się uzyskać pasywnie) możesz podglądnąć w zakładce „Target”

Burp konfiguracja - mapowanie celu

Omówmy sobie ten widok po kolei. Lewa kolumna odpowiada za aktualną strukturę aplikacji – będzie ona się powiększać wraz z twoją interakcją ze stroną. Linki podświetlone na czarno to te, które zostały przez ciebie odwiedzone. Szare linki oznaczają z kolei elementy znalezione pasywnie przez Burpa. Masz możliwość (i zawsze do tego zachęcam), uruchomienia crawlera, który pomoże ci znaleźć wszystkie podstrony (pamiętaj o tym, że crawler pokaże ci tylko podlinkowane gdzieś elementy). Aby to zrobić kliknij prawym przyciskiem na URL aplikacji i wybierz opcję „Spider this host”.

 

Burp w codziennej pracy testera + 1 pkt

Mapa strony jest przydatna zwłaszcza kiedy testujesz aplikację, której nie znasz. Pozwoli ci to nie pominąć ważnych elementów aplikacji w twoich testach (w tym elementów, o których istnieniu możesz nie wiedzieć)

 

W środkowej kolumnie widzisz konkretne zapytania wraz ze wszystkimi szczegółami. Tak jak na zakładce intercept masz możliwość przekazania ich do innych modułów. Możesz również przeglądnąć odpowiedzi z serwera.

Ostatnia kolumna o nazwie „Issues” jest dostępna tylko w wersji PRO. Jest to chyba jedna z najlepszych funkcjonalności jaką otrzymasz w wersji płatnej Burpa – automatyczny skaner bezpieczeństwa, który podczas twojej interakcji ze stroną pasywnie (lub aktywnie) poszukuje błędów bezpieczeństwa. Oczywiście jako że jest to tylko skaner automatyczny to pamiętaj o tym, żeby znalezione błędy zweryfikować.

 

Burp w codziennej pracy testera + 1 pkt

Bez dużego nakładu pracy będziesz w stanie w raporcie uwzględnić również błędy związane z bezpieczeństwem.

 

Potrafisz już wykonać podstawowe czynności z udziałem Burp’a – mam nadzieję, że już na tym etapie widzisz wartość dodaną płynącą z używania tego narzędzia podczas swoich codziennych obowiązków. Dalsze instrukcje i porady znajdą się w kolejnym artykule z serii Testuj poza przeglądarką.