
Nucleiテンプレート: WordPress Coreの認証前差分パーサーであるXSS2Shellの非侵入型検出用。ログインページへのDOM要素インジェクションを可能にし、XSS → RCEチェーンの基盤となる。
Nuclei テンプレート。WordPress Core の認証前の差分パーサー(differential parser)である XSS2Shell を非侵襲的に検出します。この脆弱性によりログインページへの DOM 要素の注入が可能になり、XSS → RCE のチェーンへの基盤となります。
⚠️ このテンプレートは 検出のみ を行います(HTML レスポンスへのマーカーリフレクション段階)。完全なエクスプロイトチェーン(DOM clobbering、JSONP/SOME、Application Password の窃取、プラグインのアップロードなど)は実行しません。明示的な許可を得た資産に対してのみ厳格に使用してください。
WordPress Core は wp-login.php で「ユーザーが登録されていません」というエラーメッセージをレンダリングする際、送信されたユーザー名を、2 つの異なるフィルター間で一貫したエスケープを行わずに HTML に挿入します。
wp_strip_all_tags()(PHP の strip_tags() ベース)は、< の直後に英字が続く場合にのみタグとして認識します。< の後にスペースがあると、フィルターはその内容をプレーンテキストとして扱います。wp_kses_post() は独自のトークナイザーを使用し、このスペースを許容して文字列を実際の HTML 要素として再構築します(<area>、、 は許可リストに含まれます)。<div><button>その結果、認証されていない攻撃者がログインページに任意の DOM 要素を注入できます。これらがレガシースクリプト user-profile.js のハンドラー、ajaxurl 変数の DOM clobbering、REST API の JSONP と組み合わさることで、WordPress オリジン上での JavaScript 実行が可能になり、完全なチェーンでは管理者アカウントに対する RCE に至ります。
発見・公開者: pwn.ai。WordPress 7.0.3 で修正済み(4.7 ブランチまでバックポート)。
このテンプレートは POST リクエストを /wp-login.php に送信し、log フィールドに次のペイロードを含めます。
< area id=xss2shell-marker href=/x>< div id=xss2shell-div>
WordPress が脆弱な場合、wp_kses_post() はこれらの文字列をレスポンス内で実際の HTML 要素として再構築します。テンプレートは regex の 2 つのマッチャー(and 条件)を使用して、両方のタグが再構築されて出現することを確認します。これにより、入力の一部をリフレクトする WAF による誤検知を減らします。
# テンプレートの構文を検証
nuclei -t CVE-2026-64638.yaml -validate
# 単一ターゲットに対して実行
nuclei -t CVE-2026-64638.yaml -u https://target.com
# ターゲットのリストに対して実行
nuclei -t CVE-2026-64638.yaml -l targets.txt
# デバッグ(完全なリクエスト/レスポンスを表示)
nuclei -t CVE-2026-64638.yaml -u https://target.com -debug-req -debug-resp
| 結果 | 意味 |
|---|---|
| マッチ(陽性) | 注入されたタグが実際の HTML としてリフレクトされた → 差分パーサーが存在 → ターゲットは脆弱(未修正) |
| マッチなし | ペイロードがエスケープまたは除去された → ターゲットは修正済み(WordPress ≥ 7.0.3)、またはタグ内のスペースを正規化する WAF/プロキシによって保護されている |
WordPress 7.0.3 以降に更新してください。パッチは 4.7 以降のすべてのサポート対象ブランチにバックポートされています。
このテンプレートは、セキュリティ研究および許可されたペネトレーションテストの目的で提供されます。明示的な許可なくシステムに対して使用することは違法です。作者は不正使用について一切の責任を負いません。
Renzi