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.

Rozwiązywanie nazw hosta w Burp: Czyli jak uniknąć edycji pliku /etc/hosts

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.

Rys. 1. Brak konfiguracji wpisu DNS.
Rys. 1. Brak konfiguracji wpisu DNS.

Wróćmy do Burpa i wybierzmy ustawienia (ang. Settings) tak jak przedstawiono to na rysunku 2.

Rys. 2. Okno główne Burp.
Rys. 2. Okno główne Burp.

Następnie, w oknie ustawień, przechodzimy do zakładki Sieć (ang. Network) (Rys. 3) oraz Połączenia (ang. Connections) (Rys. 4).

Rys. 3. Zakładka sieć (ang. Network).
Rys. 3. Zakładka sieć (ang. Network).

Rys. 4. Zakładka połączenia (ang. Connections).
Rys. 4. Zakładka połączenia (ang. Connections).

Wyszukujemy opcję Hostname resolution overrides (Rys. 5).

Rys. 5 Opcja <code>Hostname resolution overrides</code>.
Rys. 5. Opcja Hostname resolution overrides.

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).

Rys. 6. Dodawanie nowego <code>hostname</code>.
Rys. 6. Dodawanie nowego hostname.

Nasza dodana konfiguracja powinna wyglądać podobnie do tej przedstawionej na rysunku 7.

Rys. 7. Przykład poprawie skonfigurowanej opcji <code>Hostname resolution overrides</code>.
Rys. 7. Przykład poprawie skonfigurowanej opcji Hostname resolution overrides.

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.

Rys. 8. Działający przykład rozwiązywania nazw hosta z poziomu Burp Suite.
Rys. 8. Działający przykład rozwiązywania nazw hosta z poziomu Burp Suite.

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.

Rys. 9. Próba wykorzystania narzędzia SQLMap do nawiązania połączenia z analizowanym serwerem za pomocą nazwy DNS.
Rys. 9. Próba wykorzystania narzędzia SQLMap do nawiązania połączenia z analizowanym serwerem za pomocą nazwy DNS.

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.

Rys. 10. Wykorzystanie narzędzia SQLMap do nawizania połączenia z analizowanym serwerem za pomocą nazwy DNS.
Rys. 10. Wykorzystanie narzędzia SQLMap do nawizania połączenia z analizowanym serwerem za pomocą nazwy DNS.

Dodatkowo, na rysunku 11 w historii Burpa obserwujemy żądania, które zostały wysłane do naszego serwera, w tym te przekierowane przez SQLMap.

Rys. 11. Żądania wysłane przez SQLMap zapisane w historii Burp.
Rys. 11. Żądania wysłane przez SQLMap zapisane w historii Burp.

Bibliografia

  1. https://www.youtube.com/watch?v=N7BN--CMOMI
  2. https://portswigger.net/burp/documentation/desktop/settings/network/connections
  3. https://www.zenrows.com/blog/bypass-cloudflare