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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
POC-WP-XSS2Shell-CVE-2026-64638 — CVE-2026-64638(XSS2Shell)の機能的なPoC:WordPress Coreにおける認証前XSSからRCEへの攻撃チェーン。Dockerラボ+Python製の攻撃者サーバー+技術的分析と緩和策。 | Kitploit
ツール/GitHubGitHub/686f6c61/poc-wp-xss2shell-cve-2026-64638
脆弱性分析エクスプロイトウェブアプリケーション悪用学習と教育ペイロード開発ラボと実践
GitHub686f6c61/poc-wp-xss2shell-cve-2026-64638

POC-WP-XSS2Shell-CVE-2026-64638

CVE-2026-64638(XSS2Shell)の機能的なPoC:WordPress Coreにおける認証前XSSからRCEへの攻撃チェーン。Dockerラボ+Python製の攻撃者サーバー+技術的分析と緩和策。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

XSS2Shell — CVE-2026-64638 の PoC

XSS2Shell (CVE-2026-64638) チェーンの教育用 PoC です。 pwn.ai が独自に発見し、2026年8月7日に公開した、WordPress Core の 認証前 XSS → RCE の脆弱性です。


目次

  1. エグゼクティブサマリー
  2. 法的免責事項
  3. チェーンアーキテクチャ
  4. 要件
  5. リポジトリ構成
  6. クイックスタートガイド
  7. エクスプロイトの検証
  8. 追加ドキュメント

エグゼクティブサマリー

CVE-2026-64638 は、WordPress のログイン画面 (wp-login.php) における、認証前の反射型クロスサイトスクリプティング (XSS) 脆弱性です。2026年8月6日に緊急のセキュリティリリースとして公開された 7.0.3 より前の、メンテナンス中のすべてのバージョンに影響します。CVSS v4.0 スコアは 8.9 と評価されました。

XSS2Shell という名前のチェーンは、細工されたユーザー名による失敗したログイン試行だけを起点に、攻撃者が以下を実行できることを示しています:

  1. PHP の strip_tags と WordPress の wp_kses_post という2つの構文解析器の差異を利用して、ページにライブ DOM 要素を注入する。
ログイン
  • WordPress 自身の JavaScript (user-profile.js) の実行フローを乗っ取り、同一オリジンへの REST JSONP リクエストを実行させる。
  • jQuery.globalEval() により、JSONP レスポンスを WordPress オリジン上での JavaScript 実行に変換する。
  • これらすべてを Paulos Yibelo (2022) の Same Origin Method Execution (SOME) テクニックと連鎖させ、管理者の認証済みセッション内でアプリケーションパスワードの承認ボタンを自動的にクリックさせる。
  • 結果として得られるアプリケーションパスワード資格情報を取得し、悪意のある JavaScript を含むページを公開し、最終的にサーバー上で PHP を実行する ZIP 形式のプラグインをアップロードする。
  • その結果、攻撃者が制御するリンクへの管理者の 1 回のクリックを起点に、Webプロセスのユーザー (通常 www-data) 権限で WordPress サーバー上にリモートコード実行 (RCE) が発生します。


    法的免責事項

    このリポジトリには、厳密に教育および防御目的のコンテンツが含まれています。

    • 目的: トレーニング、自身の監査、パッチの検証を目的として、エクスプロイトチェーンをデモンストレーションすること。
    • 許可される使用: 自分が所有している、または明示的な書面による許可を得ている WordPress インストールに対してのみ実行してください。
    • 禁止事項: 同意のない第三者システムへのいかなる使用も禁止します。リポジトリの作者は、ここに含まれる内容の誤用について一切責任を負いません。
    • 責任: 運用者は、適用される法律 (スペインの LOPD/RGPD、米国の CFAA など) の遵守について単独で責任を負います。

    PoC には自己完結型の Docker 環境が付属しており、その唯一の目的は、ローカルで再現可能なターゲットとして機能することです。


    チェーンアーキテクチャ

    root@kitploit:~
    ┌─────────────────────────────────────────────────────────────────────┐
    │  1. XSS pre-auth en wp-login.php                                    │
    │     log=< area id=ajaxurl href=/?rest_route=/&_jsonp=...>           │
    │     (discrepancia strip_tags ↔ wp_kses_post)                        │
    └──────────────────────────────────────────┬──────────────────────────┘
                                               │
                                               ▼
    ┌─────────────────────────────────────────────────────────────────────┐
    │  2. user-profile.js dispara .trigger('click')                       │
    │     DOM clobbering de ajaxurl → petición POST al origen             │
    └──────────────────────────────────────────┬──────────────────────────┘
                                               │
                                               ▼
    ┌─────────────────────────────────────────────────────────────────────┐
    │  3. REST JSONP responde application/javascript                      │
    │     jQuery.globalEval() ejecuta el callback en el origen WP         │
    └──────────────────────────────────────────┬──────────────────────────┘
                                               │  callback = window.opener
                                               │            .approve.click
                                               ▼
    ┌─────────────────────────────────────────────────────────────────────┐
    │  4. SOME: click() cruza la frontera opener→admin                    │
    │     authorize-application.php#approve se pulsa en sesión admin      │
    └──────────────────────────────────────────┬──────────────────────────┘
                                               │
                                               ▼
    ┌─────────────────────────────────────────────────────────────────────┐
    │  5. WP crea Application Password → redirige a success_url           │
    │     El atacante captura user_login + password en callback.php       │
    └──────────────────────────────────────────┬──────────────────────────┘
                                               │  HTTP Basic REST
                                               ▼
    ┌─────────────────────────────────────────────────────────────────────┐
    │  6. POST /wp-json/wp/v2/pages  → publica página con <script>        │
    │     El admin visita la página → JS en origen WP con sesión admin    │
    └──────────────────────────────────────────┬──────────────────────────┘
                                               │
                                               ▼
    ┌─────────────────────────────────────────────────────────────────────┐
    │  7. fetch update.php?action=upload-plugin  → sube payload.zip       │
    │     PHP del plugin es accesible directamente sin activarlo          │
    └──────────────────────────────────────────┬──────────────────────────┘
                                               │
                                               ▼
    ┌─────────────────────────────────────────────────────────────────────┐
    │  8. RCE confirmada: GET /wp-content/plugins/payload/shell.php       │
    └─────────────────────────────────────────────────────────────────────┘
    

    要件

    この PoC は、macOS または Linux での実行を想定しており、必要なものは次のとおりです:

    • Docker 24+ および Docker Compose v2 (ローカルターゲット用)。
    • Python 3.9+ (オプションのオーケストレーター用)。
    • PHP 8.1+ と zip 拡張機能 (ペイロード を手動で構築する場合に必要。オプション。構築済みの ZIP は payload/ に含まれています)。
    • Chromium または Firefox ベースの最新ブラウザ。

    WordPress を手動でインストールする必要はありません。docker-compose.yml が、パッチ前の最終バージョンである脆弱な WordPress 7.0.2 を MariaDB とともに起動します。


    リポジトリ構成

    root@kitploit:~
    POC XSS2Shell (CVE-2026-64638)/
    ├── README.md                       ← Este archivo
    ├── docker-compose.yml              ← Blanco: WordPress 7.0.2 + MariaDB
    ├── .env.example                    ← Variables de configuración
    ├── exploit.py                      ← Orquestador en Python (opcional)
    ├── attacker/                       ← Infraestructura del atacante
    │   ├── index.html                  ← Página cebo con la cadena SOME
    │   ├── callback.php                ← Receptor de la Application Password
    │   └── server.py                   ← Servidor estático + PHP embebido
    ├── payload/                        ← Plugin ZIP malicioso
    │   ├── build_payload.py            ← Generador del ZIP
    │   ├── shell.php                   ← Webshell mínimo
    │   └── payload.zip                 ← ZIP preconstruido (listo para usar)
    └── docs/
        ├── ANALISIS.md                 ← Análisis técnico detallado
        └── MITIGACION.md               ← Guía de mitigación y hardening
    

    クイックスタートガイド

    1. ターゲットを起動する (脆弱な WordPress 7.0.2)

    root@kitploit:~
    cp .env.example .env
    docker compose up -d
    

    WordPress は http://localhost:8080 でアクセス可能になります。インストールウィザードに従い、管理者ユーザーを作成してください (例: admin / admin-password)。

    Dockerfile はイメージを wordpress:7.0.2-php8.2-apache に固定しています。これはパッチ 7.0.3 より前の最終バージョンです。

    2. 攻撃者インフラを起動する

    root@kitploit:~
    # En otro terminal, dentro de attacker/
    python3 server.py
    

    攻撃者サーバーは http://localhost:9000 で待ち受け、以下を公開します:

    • / → index.html (囮ページ)。
    • /callback.php → Application Password の受信側。

    3. 管理者のクリックをシミュレートする

    1. http://localhost:8080/wp-admin に管理者としてログインします。
    2. ブラウザの同じセッションで、新しいタブを開いて http://localhost:9000/ にアクセスします。
    3. 「Approve Application」という1つのボタンが表示されます。それを押すと、チェーン全体が自動的に実行されます。

    4. 資格情報の取得を確認する

    server.py を実行しているターミナルに、次のような行が表示されます:

    root@kitploit:~
    [+] Application Password recibida para el usuario 'admin':
        XXXX XXXX XXXX XXXX XXXX XXXX
    

    資格情報は attacker/captured_credentials.txt にも保存されます。

    5. RCE を確認する

    数秒後、index.html のオーケストレーターは次の操作を完了しています:

    • WordPress オリジンで JavaScript を実行するページを公開済みです。
    • payload.zip プラグインを wp-content/plugins/payload/ にアップロード済みです。

    次のコマンドでコード実行を確認します:

    root@kitploit:~
    curl -sI http://localhost:8080/wp-content/plugins/payload/shell.php
    

    Hacked: true ヘッダーと JSON ボディによって RCE が確認されます。


    エクスプロイトの検証

    チェーンが完了すると、次のエンドポイントが証拠となります:

    リソース期待される証拠
    GET /wp-content/plugins/payload/shell.phpヘッダー Hacked: true + JSON {"rce":true,"user":"www-data"}
    attacker/captured_credentials.txt取得されたアプリケーションパスワード
    wp-admin → アプリケーション → アプリケーションパスワード「SomeApp」という名前の新しいエントリ

    追加ドキュメント

    • docs/ANALISIS.md — WordPress のソースコードへの参照を含む、チェーンの各フェーズの詳細な技術分析。
    • docs/MITIGACION.md — 推奨される緩和策、ハードニング、および パッチ 7.0.3 の検証。

    クレジット

    • オリジナルの調査と公開: pwn.ai — https://pwn.ai/blog/xss2shell
    • 基盤となる SOME テクニック: Paulos Yibelo (2022)。pwn.ai のブログで公開され、2022年の Top Web Hacking Techniques にノミネートされました。
    • このリポジトリの PoC とパッケージング: 教育目的の自作です。

    ライセンス

    MIT ライセンスの下で配布されています。詳細は LICENSE ファイルを参照してください。

    ツールをダウンロード