Pentesting JDWP - Java Debug Wire Protocol
Last updated
Last updated
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Uzyskaj perspektywę hakera na swoje aplikacje internetowe, sieć i chmurę
Znajdź i zgłoś krytyczne, wykorzystywalne luki w zabezpieczeniach, które mają rzeczywisty wpływ na biznes. Użyj naszych 20+ niestandardowych narzędzi, aby zmapować powierzchnię ataku, znaleźć problemy z bezpieczeństwem, które pozwalają na eskalację uprawnień, i użyj zautomatyzowanych exploitów, aby zebrać niezbędne dowody, przekształcając swoją ciężką pracę w przekonujące raporty.
Wykorzystywanie JDWP opiera się na braku uwierzytelniania i szyfrowania protokołu. Zwykle znajduje się na porcie 8000, ale możliwe są inne porty. Początkowe połączenie nawiązywane jest poprzez wysłanie "JDWP-Handshake" do docelowego portu. Jeśli usługa JDWP jest aktywna, odpowiada tym samym ciągiem, potwierdzając swoją obecność. Ten handshake działa jako metoda identyfikacji do rozpoznawania usług JDWP w sieci.
Jeśli chodzi o identyfikację procesów, wyszukiwanie ciągu "jdwk" w procesach Java może wskazywać na aktywną sesję JDWP.
Narzędziem, które warto użyć, jest jdwp-shellifier. Możesz go używać z różnymi parametrami:
Zauważyłem, że użycie --break-on 'java.lang.String.indexOf'
sprawia, że exploit jest stabilniejszy. A jeśli masz możliwość przesłania backdoora na hosta i jego wykonania zamiast wykonywania polecenia, exploit będzie jeszcze bardziej stabilny.
To jest podsumowanie https://ioactive.com/hacking-java-debug-wire-protocol-or-how/. Sprawdź to, aby uzyskać więcej szczegółów.
Przegląd JDWP:
To protokół binarny oparty na pakietach, głównie synchroniczny.
Brak uwierzytelniania i szyfrowania, co czyni go podatnym na ataki, gdy jest narażony na wrogie sieci.
Uścisk dłoni JDWP:
Używany jest prosty proces uścisku dłoni do rozpoczęcia komunikacji. Wymieniana jest 14-znakowa ciąg ASCII „JDWP-Handshake” między Debuggerem (klientem) a Debuggee (serwerem).
Komunikacja JDWP:
Wiadomości mają prostą strukturę z polami takimi jak Długość, Id, Flaga i CommandSet.
Wartości CommandSet wahają się od 0x40 do 0x80, reprezentując różne akcje i zdarzenia.
Eksploatacja:
JDWP pozwala na ładowanie i wywoływanie dowolnych klas i bajtkodu, co stwarza zagrożenia dla bezpieczeństwa.
Artykuł szczegółowo opisuje proces eksploatacji w pięciu krokach, obejmujących pobieranie odniesień do Java Runtime, ustawianie punktów przerwania i wywoływanie metod.
Eksploatacja w rzeczywistości:
Pomimo potencjalnych zabezpieczeń zapory, usługi JDWP są wykrywalne i podatne na ataki w rzeczywistych scenariuszach, co zostało udowodnione przez wyszukiwania na platformach takich jak ShodanHQ i GitHub.
Skrypt exploita był testowany na różnych wersjach JDK i jest niezależny od platformy, oferując niezawodne zdalne wykonanie kodu (RCE).
Implikacje bezpieczeństwa:
Obecność otwartych usług JDWP w internecie podkreśla potrzebę regularnych przeglądów bezpieczeństwa, wyłączania funkcji debugowania w produkcji oraz odpowiedniej konfiguracji zapory.
http://www.secdev.org/projects/scapy(no longer active)
http://www.hsc-news.com/archives/2013/000109.html (no longer active)
https://github.com/search?q=-Xdebug+-Xrunjdwp&type=Code&ref=searchresults
Uzyskaj perspektywę hakera na swoje aplikacje internetowe, sieć i chmurę
Znajdź i zgłoś krytyczne, podatne na ataki luki z rzeczywistym wpływem na biznes. Użyj naszych 20+ niestandardowych narzędzi do mapowania powierzchni ataku, znajdowania problemów z bezpieczeństwem, które pozwalają na eskalację uprawnień, oraz użyj zautomatyzowanych exploitów do zbierania niezbędnych dowodów, przekształcając swoją ciężką pracę w przekonujące raporty.
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)