Burp intruder to zaawansowany i jednocześnie prosty w obsłudze fuzzer http. Jednym z zastosowań tego typu fuzzera jest możliwość półautomatycznego wykrywania podatności w aplikacji webowej. Połautomatycznego, ponieważ to na osobie korzystającej z narzędzia spoczywa:
Po wykonaniu opisanych powyżej akcji, następuje automatyczna praca fuzzera, który z kolei dostarcza niezinterpretowane wyniki. Interpretacja wyników należy również do audytora/pentestera.
Zobaczmy jak wygląda wykorzystanie Burp intrudera w praktyce.
Pierwszym krokiem jest określenie jakie parametry (punkty wejścia) chcemy poddać fuzzingowi. Możemy wykonać tą operację ręcznie (tworząc zapytanie HTTP od zera) lub przesłać request HTTP do fuzzera z innego modułu Burp Suite (np. z proxy). W tym drugim przypadku, program podpowiada nam sugerowane punkty wejścia - tj. parametry, które będziemy chcieli w zautomatyzowany sposób podstawiać innymi wartościami (payloadami), obserwując wyniki. Przykładowy, przesłany do intrudera request HTTP prezentuję poniżej:
Po ustaleniu punktów wejścia (oznaczonych w intruderze znakami §...§) należy określić w jaki sposób będą one podstawiane. Na zrzucie ekranowym powyżej została wybrana opcja sniper, która oznacza podstawiania punktów wejścia kolejno. To znaczy: w pierwszej wartości zostaną zastosowane podstawienia dla pierwszej ustalonej zmiennej (pozostałe przyjmują wartości domyślne), później dla drugiej zmiennej, itd.
Kolejny krok to określenie payloadów, którymi uzupełniane będą punkty wejścia.
Program oferuje kilka gotowych szablonów fuzzingu, w zależności jaki zamierzamy osiągnąć efekt. Część szablonów prezentuję na liście rozwijanej znajdującej się na zrzucie ekranowym:
Każdy z szablonów posiada dedykowane dla siebie ustawienia, za pomocą których sterujemy doborem zbioru payloadów. Przykładowo w szablonie 'preset list', dostępne mamy predefiniowane przez twórców Burp Suite zbiory, umożliwiające fuzzing zmierzający do osiągnięcia określonych celów (np. wykrycia pewnych podatności w aplikacji webowej). Możemy uzupełnić tą listę również o własne payloady. W takim przypadku lepiej jednak skorzystać z szablonu 'runtime file', gdzie istnieje możliwość załadowania własnego pliku tekstowego z payloadami (jeden payload na linię). Mając odpowiednią bazę plików możemy stosować wybrane jej elementy w zależności od potrzeby...
Poniżej znajduje się zrzut ekranowy ze szczegółami szablonu 'preset list'

Jako ciekawy przykład innego szablonu, warto wspomnieć moduł umożliwiający wykrycie podatności związanych z nieprawidłową obsługą unicode:

Czy też szablon umożliwiający generowanie liczb:

W ramach przykładowego ataku z wykorzystaniem Burp Suite, pokażę mniej typowe wykorzystanie burp intrudera - mianowicie użycie techniki bruteforce do przełamania systemu uwierzytelnienia. Przykładowy atak wygląda następująco:
Authorization: Basic Base64(user:password)gdzie Base64(...) to reprezentacja ciągu znaków w kodowaniu Base64. Dokładniej rzecz biorąc, będziemy zmieniać wartość Base64(user:password) i w ten sposób umieszczamy nasz punkt wejścia. Wartość która znajduje się wewnątrz tak określonego punktu (YTph), jest bez znaczenia, ponieważ w będzie ona zamieniona przez wartości payloadów.
Burp intruder - przykładowy atakBase64(admin:<nowo_wygenerowany_payload>)Z kolei nagłówek HTTP przyjmie formę:
Authorization: Basic Base64(admin:<nowo_wygenerowany_payload>)

Powyższy, prosty przykład pokazuje podstawową ideę fuzzingu:
W naszym przypadku był to "zwykły" bruteforce, gdzie:
Omawiany przykład jest dość prosty, jednak pokazuje zasadę działania fuzzera dostępnego w Burp Suite Professional. W podobny sposób można wykonać analizę aplikacji na pod względem występowaniach podatności, związanych z nieprawidłową obsługą wejścia.
Moduł intruder zawarty w Burp Suite Professional, to rozbudowany fuzzer HTTP, z którego w zasadzie można zacząć korzystać "z marszu". Przemyślany interface powoduje, że z modułu korzysta się bardzo wygodnie, a predefiniowane bazy payloadów mogą pomóc rozpocząć korzystanie z narzędzia mniej zaawansowanym użytkownikom. Mam też nadzieję, że twórcy Burp-a rozbudują w jednej z kolejnych wersji moduł interpretacji wyników generowanych przez fuzzer.