Rozwiązywanie nazw hosta w Burp: Czyli jak uniknąć edycji pliku /etc/hosts
W niniejszym artykule przedstawię metodę unikania ręcznej edycji pliku /etc/hosts podczas testów penetracyjnych i audytów bezpieczeństwa, wykorzystując narzędzie Burp Suite (opcja ta dostępna jest w wersji Enterprise oraz Community). Ta technika nie tylko zwiększa efektywność testów, ale również oferuje większą elastyczność, co może być pomocne przy omijaniu WAF, takich jak np. Cloudflare. Inspiracją do opracowania tego artykułu było wystąpienie @Agarri_FR, które przestawia sztuczki do efektywniejszego wykorzystania Burp Suite.
W świecie cyberbezpieczeństwa, gdzie każdego dnia mierzymy się z coraz to nowszymi wyzwaniami, kluczowe staje się nie tylko posiadanie solidnej wiedzy teoretycznej, ale także umiejętność szybkiego adaptowania się do zmieniających się warunków. Jednym z takich wyzwań jest efektywne rozwiązywanie nazw hosta podczas testów penetracyjnych lub audytów bezpieczeństwa, w szczególności przy użyciu narzędzi takich jak Burp Suite. Pozostałe dwa popularne narzędzia takie jak ZAP oraz Caido zostały pominięte, ponieważ nie oferują tego typu funkcjonalności. W niniejszym artykule skupimy się na metodzie, która umożliwia uniknięcie konieczności edycji pliku /etc/hosts na systemach Unixowych, co zazwyczaj jest standardową procedurą przy pracy z różnymi domenami kierowanymi na testowane aplikacje. Metoda ta działa również na systemie Windows 🙂
Tradycyjna metoda rozwiązania tego problemu często wiąże się z koniecznością ręcznej edycji wspomnianego pliku. Jest to rozwiązanie nie tylko czasochłonne, ale również podatne na błędy, szczególnie w środowisku, gdzie wymagana jest szybka adaptacja i elastyczność. Alternatywnie, proponuję skorzystanie z funkcjonalności Burp Suite, która pozwala na wewnętrzne rozwiązywanie nazw hosta, eliminując potrzebę modyfikacji plików systemowych.
Oprócz wyżej wymienionych zalet, przedstawiona konfiguracja może okazać się nieoceniona podczas prób omijania systemów WAF (Web Application Firewall), takich jak na przykład Cloudflare, szczególnie gdy serwer docelowy jest niepoprawnie skonfigurowany. W takich sytuacjach, umiejętne zarządzanie nazwami hostów może umożliwić testerowi omijanie pewnych ograniczeń bezpieczeństwa i realizację efektywniejszych testów penetracyjnych.
Metoda ta, inspirowana jest prezentacją przeprowadzoną przez @Agarri_FR dostępną pod adresem: NSEC2023 - Burp Suite Pro tips and tricks, the sequel, the sequel. Swoją drogą, polecam każdemu kto zajmuje się testami penetracyjnymi na zapoznanie się ze wspomnianymi sztuczkami.
W ramach tego artykułu, zilustruję opisaną technikę na przykładzie konfiguracji podatnej maszyny dostępnej na portalu HackTheBox, co pozwoli na praktyczne zastosowanie omawianej metody. Zapraszam do lektury i eksperymentowania, mając nadzieję, że przedstawione rozwiązanie uczyni Wasze testy jeszcze bardziej efektywne i pozbawione niepotrzebnego manualnego konfigurowania systemu.
Poniżej przedstawiam opis krok po kroku. Dla tych co wolą wideo tutaj znajdziecie filmik:
Rysunek 1 przedstawia brak konfiguracji wpisu DNS. Błąd Unknown host: hospital.htb wskazuje
informuje, że Burp nie był w stanie rozwiązać żądanej nazwy domenowej.
Wróćmy do Burpa i wybierzmy ustawienia (ang. Settings) tak jak przedstawiono to na rysunku 2.
Następnie, w oknie ustawień, przechodzimy do zakładki Sieć
(ang. Network
) (Rys. 3) oraz Połączenia
(ang. Connections
) (Rys. 4).
Wyszukujemy opcję Hostname resolution overrides
(Rys. 5).
Klikamy Dodaj
(ang. Add
) i w polu IP Address
wpisujemy adres IP badanego serwera. W polu Hostname
wprowadzamy nazwę DNS, pod którą chcemy, aby serwer był dostępny (Rys. 6).
Nasza dodana konfiguracja powinna wyglądać podobnie do tej przedstawionej na rysunku 7.
Teraz możemy powrócić do naszej przeglądarki i kliknąć Odśwież
. W tym momencie powinna się wyświetlić działająca strona, podobnie jak na rysunku 8.
W tym momencie czytelnik może zastanawiać się, jak sytuacja wygląda w przypadku narzędzi takich jak na przykład sqlmap. Rozwiązanie jest prostsze, niż mogłoby się wydawać. Większość narzędzi używanych podczas testów penetracyjnych umożliwia konfigurację proxy. Korzystanie z dodatkowego proxy, takiego jak Burp, zwłaszcza przy użyciu sqlmap, jest bardzo dobrym pomysłem, ponieważ umożliwia zbieranie wszystkich żądań wysyłanych do serwera. Dzięki temu, po pierwsze, mamy zebrane dowody z przeprowadzonych prac, a po drugie, w przypadku jakichkolwiek nieścisłości, zawsze możemy wrócić do wysłanych żądań. Teraz pokażę, jak to zrobić.
Rysunek 9 przedstawia próbę nawiązania połączenia z serwerem. Ponieważ nie dodaliśmy wpisu do pliku /etc/hosts, system nie był w stanie poprawnie rozwiązać nazwy DNS, co uniemożliwiło połączenie się z analizowanym przez nas zasobem.
Aby rozwiązać ten problem, dodajemy flagę --proxy
, kierującą ruch przez Burp. Na rysunku 10 widać, że po dodaniu tej flagi wszystko funkcjonuje prawidłowo.
Dodatkowo, na rysunku 11 w historii Burpa obserwujemy żądania, które zostały wysłane do naszego serwera, w tym te przekierowane przez SQLMap.