
WordPress Core 未認証 RCE (CVE-2026-63030, CVE-2026-60137)
__ ______ ____ ____ _ _ _____ _ _ \ \ / / _ \___ \/ ___|| | | | ____| | | | \ \ /\ / /| |_) |__) \___ \| |_| | _| | | | | \ V V / | __// __/ ___) | _ | |___| |___| |___ \_/\_/ |_| |_____|____/|_| |_|_____|_____|_____|wp2shell-checker | WordPress Batch API Desync Detector
WordPress Core REST Batch API の認証前 RCE を検査・検出するツール
作者: 0xjessie21 — Cybersecurity ILCS
| シグネチャ | wp2shell / WP Core REST Batch API Desync |
| 深刻度 | 9.8 CRITICAL — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| 影響を受けるバージョン | WordPress 6.9.0-6.9.4 および 7.0.0-7.0.1 |
| 修正版 | 6.9.5, 7.0.2 |
| 前提条件 | なし — 認証なし、プラグイン不要、デフォルト設定 |
| モード | 非破壊 / 読み取り専用プローブ |
認可された内部 VAPT エンゲージメントにおいて、ツールが脆弱な WordPress インスタンスを検出しているスクリーンショット。

このツールは、許可されたセキュリティテストおよび防御的検証目的にのみ使用してください。
| 所有している、または明示的な書面による許可を得ている WordPress インスタンスに対してのみ使用してください(例:承認済みの内部 VAPT スコープ)。 | |
このプローブは非破壊的になるよう設計されています — 存在しないカテゴリ ID(0)をターゲットとし、権限チェック層で停止するため、データが作成・変更・削除されることは一切ありません。 | |
| 実際の悪用を試みるためにペイロードを変更(例:カテゴリ ID を実在のものに変更する、他の REST ルートを指定する)しないでください。そうすると、これは検出器から兵器化されたエクスプロイトに変わります — このツールはそのような用途のために作られておらず、サポートもしていません。 | |
| 認可された範囲外のシステムに対して、このツールを公開、再配布、実行しないでください。第三者システムへの不正使用は、インドネシアの ITE 法(UU ITE) や、その他の国の同等のコンピュータ不正使用法に違反する可能性があります。 | |
| 現状のまま、無保証で提供されます。作者および関連組織は、このツールの使用に起因する誤用、損害、法的結果について一切の責任を負いません。 |
このツールを使用することにより、あなたの使用が適用法および所属組織の承認ポリシーに準拠していることを保証する責任が、単独であなたにあることに同意したものとみなされます。
WordPress Core の REST Batch API(/wp-json/batch/v1)は、バッチ内のサブリクエストを解決する際に 3 つの並列配列を同期状態に保ちます。意図的に不正な形式にしたサブリクエストにより、これらの配列はデシンクロナイズされ、以降のすべてのサブリクエストが誤ったハンドラーと権限コールバックでディスパッチされることになります。
このツールは、1 つの細工されたバッチリクエストを送信し、レスポンスコードのみを検査します。状態を変更する操作に踏み込むことは一切ありません。
| # | サブリクエスト | 目的 |
|---|---|---|
| 0 | POST http://: | 意図的に不正な形式 — インデックスのデシンクを引き起こす |
| 1 | DELETE /wp/v2/categories/0 | 安全なセンサー — カテゴリ ID 0 は存在しないため |
| 2 | POST /wp/v2/block-renderer/core/paragraph | リークを検出するために使用されるリファレンスハンドラー |
判定ロジック
| 結果 | 判定 |
|---|---|
block_cannot_read | 脆弱(VULNERABLE) — block-renderer ハンドラーから権限チェックが漏洩 |
rest_term_invalid | 修正済み(PATCHED) — categories ハンドラーが正常に応答 |
| マーカーなし | 判定不能(INCONCLUSIVE) — WAF、API 無効化、または WordPress ではない可能性 |
さらに、このツールはレスポンスヘッダーからパッシブな WAF/CDN フィンガープリンティングを実行します:
Cloudflare · Sucuri · Akamai · AWS CloudFront · Imperva · Fastly · F5 BIG-IP · Wordfence
# 基本スキャン
./wp2shell_checker.py https://your-site.com
# 複数ターゲットを一度にスキャン
./wp2shell_checker.py https://site1.com https://site2.com https://site3.com
# タイムアウトをカスタム
./wp2shell_checker.py https://your-site.com --timeout 20
# 完全な生のリクエスト/レスポンスを表示(ペイロード、ヘッダー、ボディ)
./wp2shell_checker.py https://your-site.com --raw
# カラー/アニメーションを無効化(ファイルにログを記録する場合)
./wp2shell_checker.py https://your-site.com --no-color > scan_report.txt
全フラグ
| フラグ | 説明 |
|---|---|
targets | スキャン対象の 1 つ以上のベース URL(必須) |
--timeout N | リクエストのタイムアウト秒数(デフォルト: 10) |
--no-color | ANSI カラーとスキャンアニメーションを無効化 |
--raw | 完全な生のリクエスト/レスポンスのペイロードとヘッダーを出力 |
ターゲットが**脆弱(VULNERABLE)**と判定された場合:
7.0.2 に更新してください(6.9 系の場合は 6.9.5)。更新が実際に適用されたことを確認してください。/wp-json/batch/v1 および ?rest_route=/batch/v1 をブロックします — 両方の形式をブロックする必要があります。| wp2shell.com | オリジナルのチェッカーおよびアドバイザリ(Searchlight Cyber) |
| Hadrian Security — Technical Breakdown | 根本原因分析 |
このプロジェクトは MIT ライセンスの下で提供されています — 詳細は LICENSE ファイルを参照してください。
Cybersecurity ILCS · 内部防御用途向けに構築