Wracamy z kolejnymi wpisami, tym razem mam dla was coś specjalnego. Pierwszy wpis gościnny. Michał Kędzior z bloga my127001.pl napisał świetny post o Intruderze. Rozłożył na czynniki pierwsze wszystkie jego funkcje zatem nie przedłużając zapraszam do lektury.
Zakładka Intruder służy do automatycznego zastępowania wcześniej wybranych i oznaczonych parametrów w żądaniu HTTP, predefiniowanymi wartościami z gotowych list zawierającymi odpowiednie payloady. Wyniki przedstawiane są w formie tabelarycznej, którą należy przejrzeć pod kątem nietypowych odpowiedzi serwera, wskazujących na potencjalne problemy bezpieczeństwa.
Aby rozpocząć pracę z omawianym modułem należy najpierw wybrać żądanie, które poddamy dalszym operacjom. Można to zrobić klikając prawym klawiszem myszy na przechwycone żądanie i wybranie z menu kontekstowego opcji “Send to Intruder” lub też posłużyć się skrótem klawiszowym Ctrl + I.
Wybrany request pojawi się w module Intrudera. Następnie możemy przejść do dalszej konfiguracji poszczególnych opcji. W zakładce “Attack Target” definiujemy:
- Host – Adres IP serwera lub domenę naszego celu.
- Port – Numer portu usługi HTPP/S.
- Use HTTPS – Określa, czy należy używać SSL.
Zakładka “Positions” służy do wybrania pozycji, w które będą wstrzykiwane nasze payloady.
Zaznaczamy interesujące nas pola i klikamy przycisk “Add” aby je oznaczyć.
Możemy także posłużyć się tutaj przyciskiem “Auto”, który za nas zaznaczy wszystkie parametry w URLu, ciasteczkach oraz ciele żądania.
Ponadto w zakładce tej definiujemy w jaki sposób nasz atak ma zostać przeprowadzony. Do wyboru mamy następujące opcje:
- Sniper – Jak sama nazwa wskazuje – to ustawienia powoduje, że intruder skupia się na jednym parametrze.Używa pojedynczej listy paylodów. Celuje on kolejno w każdą wybraną pozycję i umieszcza każdy zdefiniowany ładunek po kolei w tej pozycji. Pozycje, które nie są w danym momencie atakowane, nie zostaną naruszone – znaczniki pozycji są usuwane, a każdy tekst, który pojawia się między nimi, pozostaje niezmieniony. Ten typ ataku jest przydatny do fuzzowania wielu parametrów indywidualnie pod kątem popularnych podatności. Całkowita liczba żądań wygenerowanych w tym typie ataku jest iloczynem liczby pozycji i liczby przygotowanych ładunków.
- Battering ram – podobnie jak snajper używa pojedynczej list ładunków, ale tutaj ten sam payload jest umieszczany na wszystkich zdefiniowanych pozycjach jednocześnie.Ten typ ataku jest przydatny, gdy wymagane jest wprowadzenie takie samego parametru w różnych miejscach żądania (np. nazwa użytkownika w ciasteczku oraz w body). Całkowita liczba żądań wygenerowanych w ataku to liczba ładunków w zestawie danych.
- Pitchfork – w odróżnieniu od poprzednich ustawień ta opcja wykorzystuje zestawy wielu list. Dla każdej z zdefiniowanej pozycji inny zestaw payloadów (maksymalnie 20). Atak iteruje przez wszystkie zestawy ładunków jednocześnie i podstawia jeden ładunek na każdym z zaznaczonych parametrów. Innymi słowy, w pierwszym wygenerowanym żądaniu umieści pierwszy ładunek z zestawu danych 1 na pozycji 1, a pierwszy ładunek z zestawu danych 2 na pozycję 2. W drugim żądaniu umieści drugi ładunek z zestawu ładunków 1 w pozycji 1, a drugi ładunek z zestawu ładunków 2 w pozycję 2 itd. Ten typ ataku jest przydatny, gdy przygotowane listy payloadów są ze sobą powiązane ale muszą być umieszczone w różnych miejscach (np. login użytkownika w jednym miejscu, a w drugim jego numer ID). Całkowita liczba żądań wygenerowanych w ataku to liczba ładunków w najmniejszym zestawie danych.
- Cluster bomb – podobnie jak w poprzednim ustawieniu wykorzystywane jest tutaj wiele list z ładunkami – dla każdej z zdefiniowanej pozycji inny zestaw payloadów (maksymalnie 20). Różnica polega natomiast na tym, że w tym typie ataku Intruder przechodzi iteracyjnie przez każdy zestaw ładunków po kolei w taki sposób, że przetestowane są wszystkie kombinacje. Dla przykładu, jeśli istnieją dwa zdefiniowane parametry, Intruder umieści pierwszy ładunek z zestawu danych 2 na pozycji 2 i przejdzie przez wszystkie ładunki w zestawie danych 1 na pozycji 1. Następnie umieści drugi ładunek z zestawu danych 2 na pozycji 2 i przejdzie przez wszystkie ładunki w zestawie danych 1 na pozycji 1. Taki rodzaj ataku może zostać wykorzystany podczas zgadywania danych dostępowych, nazwy użytkownika w jednym parametrze i hasła w innym parametrze. Całkowita liczba żądań wygenerowanych w ataku jest iloczynem liczby ładunków we wszystkich zdefiniowanych listach przez co ogólna liczba wygenerowanych żądań może okazać się bardzo duża.
Kolejną kartą w Intruderze jest jest pozycja “Payloads”.
Możemy tutaj skonfigurować jeden lub więcej zestawów danych używanych jako nasze ładunki w atakach. Liczba tych zestawów zależy od typu ataku zdefiniowanego w poprzedniej karcie.
Dla wielu typowych zadań takich jak fuzzowanie parametrów, brutforcowanie hasła użytkownika czy też przełączanie się pomiędzy identyfikatorami stron, wymagany jest jedynie jeden zestaw danych.
Są tutaj dostępne następujące możliwości konfiguracyjne:
- Payload Sets – z rozwijanej listy możemy wybrać wiele różnych typów ładunków, które możemy kolejne skonfigurować pod swoje preferencje. Pozwala to w szybki sposób zautomatyzować proces generowania naszych list. Można dodawać elementy do listy za pomocą pola tekstowego i przycisku „Add”, wkleić gotową listę ze schowka lub wczytać ją z pliku.
- Payload Options – To tutaj konfigurujemy ustawienia wcześniej wybranego typu listy. Najprostszym z nich oraz najczęściej używanym jest “Simple List”, która pozwala na stworzenie listę ciągu znaków, które będą następnie używane jako nasze payloady.
- Payload Processing – Opcja ta służy do definiowania różnego rodzaju reguł służących tworzeniu skomplikowanych ładunku. Możemy tutaj między innymi dodawać prefixy i suffixy przed naszymi payloadami, czy też encodować ich wartość do pożądanego przez nas formatu.
- Payload Encoding – Możemy tutaj skonfigurować, które znaki w ładunku powinny być kodowane do formatu zgodnego z URL w celu poprawnej transmisji w ramach żądań HTTP. Ustawienie to jest stosowane jako ostatnie po wykonaniu wszystkich poprzednich reguł związanych z przetwarzaniem naszego paylodu.
Ostatnią kartą w Intruderze jest jest karta “Options”.
Znajdziemy tutaj następujące możliwości konfiguracyjne:
- Request Header – Służy do konfiguracji aktualizowania przez Intrudera nagłówków wygenerowanych żądań podczas ataku.
- Request Engine – Możemy tutaj skonfigurować niejako prędkość naszego ataku poprzez ustawienie ilość używanych wątków, ilości podejmowanych prób przy problemach z połączeniem oraz ustawienie odstępu czasowego pomiędzy podjęciem kolejnych prób.
- Attack Results – Ustawienie służy do zdefiniowania jakie informacje mają się znaleźć w wynikach naszego ataku.
- Grep – Match – Tego ustawienia możemy użyć do oznaczania w naszych wynikach rezultatów zawierających specyficzne wyrażenie.
- Grep – Extract – Tego ustawienia możemy użyć do wyciągnięcia z odpowiedzi serwera do naszych wyników rezultatów zawierających specyficzne wyrażenie.
- Grep – Payloads – Te ustawienia może być użyte do oznaczania wyników, które zawierają w swojej odpowiedzi przesłany ładunek.
- Redirections – To ustawienia kontrolujw w jaki sposób Burp ma się zachowywać w przypadku przekierowań podczas wykonywania ataku.