⚡️ Cloudflare Image Resizing <= 1.5.6 - 未認証リモートコード実行(CVE-2025-8723)エクスプロイト
🚨 脆弱性の概要
WordPress用プラグイン Cloudflare Image Resizing(バージョン <= 1.5.6)には、認証欠如 の脆弱性が存在し、rest_pre_dispatch フックを介して 未認証リモートコード実行(RCE) が可能になります。
- CVE: CVE-2025-8723
- CVSS スコア: 9.8(Critical)
- 公開日: 2025年8月18日
- ベクター:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
- 発見者: Wordfence Intelligence
説明:
このプラグインのREST APIエンドポイントはユーザー認証に失敗し、hook_rest_pre_dispatch() メソッド内で入力のサニタイズが不適切です。この欠陥により、攻撃者はログイン不要で悪意のあるリクエストを作成し、任意のPHPコードを注入・実行できます。
🛠 このエクスプロイトの機能
- プロフェッショナルでモジュール化・拡張可能なPythonスクリプト
readme.txt ファイルの解析によるプラグイン脆弱性の自動検出
- WAFおよび制限環境向けの複数のバイパス手法:
- 最小限および高度なヘッダーセット(ランダム化されたUser-Agent、Referer、Origin、X-Forwarded-For など)
- ヘッダーローテーションによる反復試行
- プロキシ対応(カスタムまたはBurpSuite方式)
- カスタムコマンド実行:
- デフォルト:
whoami、ただし任意のコマンドを指定可能
- 情報量の多いステータスコードを備えた明確でプロフェッショナルな出力
- すべてのエラーケースを適切に処理(プラグイン欠如、禁止/未承認、サーバーエラーなど)
📦 スクリプトの内部構成
1️⃣ 自動脆弱性検出
wp-content/plugins/cf-image-resizing/readme.txt を取得
- プラグインバージョンを抽出して確認
- バージョンが 1.5.6 以下の場合、エクスプロイトを実行
2️⃣ 複数のエクスプロイト戦略
- 最小ヘッダー: 互換性を最大化するために必要なものだけを送信
- 高度なヘッダー: 試行ごとにUser-Agent、Referer、Origin、Accept-Language などをランダム化
- ヘッダーローテーション: WAFとレート制限を回避するために複数の組み合わせを試行
3️⃣ カスタマイズ可能な実行
- CLI引数でターゲット上で任意のシステムコマンドを実行
例: -c "id"
4️⃣ プロキシ対応
--proxy を使用してプロキシ経由でリクエストを送信(例: BurpSuite)
5️⃣ 包括的な出力
- 検出されたバージョン、脆弱性ステータス、試行された手法、実際のコマンド出力を表示
🚀 使用方法
python3 CVE-2025-8723.py -u http://target.com/
カスタムコマンドを指定:
python3 CVE-2025-8723.py -u http://target.com/ -c "id"
プロキシを使用(例: BurpSuite):
python3 CVE-2025-8723.py -u http://target.com/ --proxy http://127.0.0.1:8080
高度なヘッダー試行回数を増やす(デフォルトは5):
python3 CVE-2025-8723.py -u http://target.com/ --attempts 10
🧩 出力例
[+] CVE-2025-8723 Exploit | by Khaled Alenazi (Nxploited)
[+] Detected version: 1.5.6
[+] Target is vulnerable (<=1.5.6). Proceeding with exploit.
[*] Trying minimal headers (only Content-Type)...
[=] Minimal Headers | Status: 200
www-data
[+] Exploit worked with this method!
🛡️ バイパス&回避テクニック
- ヘッダーランダム化: さまざまなUser-Agent、Referer、Origin、Accept-Language の組み合わせを試行
- プロキシ対応: プロキシを使用してIPをローテーションし、IPベースの制限をバイパス
- 複数試行: リクエストがブロックまたは拒否された場合、新しいヘッダーで再試行
- エラーハンドリング: 一般的な応答(404、401、403、5xx、タイムアウト)をスマートに解釈
📖 スクリプト構造の説明
- normalize_url: URL形式の正確性を保証
- get_headers: 試行ごとにランダム化された高度なヘッダーを生成
- get_readme/extract_version/is_vulnerable: 自動脆弱性検出ロジック
- try_exploit: 指定されたヘッダーセットでエクスプロイトを試行
- exploit_all: すべてのエクスプロイト試行を調整し、ヘッダー戦略を自動的に切り替え
- scan: プラグインの存在と脆弱性をチェック
- Nxploited (main): 引数解析、レポート、エクスプロイトワークフロー
⚠️ 免責事項
このツールは、認可されたセキュリティテストおよび教育目的専用です。
開発者は、このコードによって引き起こされた誤用や損害について一切責任を負いません。
By: Khaled Alenazi (Nxploited)