h4cd0c/wp2shell
GitHub: h4cd0c/wp2shell
一款将 WordPress 两个核心漏洞链式组合实现认证前远程代码执行的 PoC 利用工具。
Stars: 0 | Forks: 0
# wp2shell
针对 WordPress Core 的认证前远程代码执行。
将 **CVE-2026-60137**(`WP_Query` 中 `author__not_in` / `author_exclude` 参数的 SQLi)与 **CVE-2026-63030**(REST API 批量路由混淆)相结合,实现未经身份验证的 RCE。
## 受影响版本
| 版本范围 | 状态 |
|---|---|
| <= 6.8.5 | 不受影响(无批量路由混淆) |
| 6.8.0 - 6.8.5 | 仅存在 SQLi,无 RCE |
| **6.9.0 - 6.9.4** | **存在漏洞** |
| **7.0.0 - 7.0.1** | **存在漏洞** |
| 7.0.2+ / 6.9.5+ | 已修复 |
## 用法
```
python3 poc.py -u TARGET_URL
python3 poc.py -u TARGET_URL --sql "SELECT user_pass FROM wp_users LIMIT 1"
python3 poc.py -u TARGET_URL -c "id"
```
### 模式
| 参数 | 行为 |
|---|---|
| `-u TARGET_URL` | 检查是否存在漏洞(时间探测) |
| `-u TARGET_URL --sql "SQL"` | 通过盲注 SQLi 提取标量 |
| `-u TARGET_URL -c "CMD"` | 完整的 RCE 利用链 |
## 工作原理
1. **批量路由混淆** — 利用批量 API (`/batch/v1`) 使请求处理不同步,从而绕过身份验证
2. **基于时间的盲注 SQLi** — 通过 `SLEEP()` 时间预言机注入到 `author_exclude` 参数中
3. **oEmbed 缓存破坏** — 通过 UNION 注入创建伪造的 oEmbed 缓存条目
4. **Customizer changeset 注入** — 将缓存条目重新转换为具有管理员作者身份的 changeset
5. **管理员账户创建** — 发布 changeset 并创建新的管理员用户
6. **插件上传** — 以新管理员身份登录,上传一个注册 REST API 命令 endpoint 的插件
7. **命令执行** — 通过插件的 REST endpoint 发送命令,返回输出,然后自我销毁
## 攻击流程
```
Vulnerability check → Seed oEmbed posts → Extract table name (blind SQLi)
→ Extract admin ID (blind SQLi) → Extract cache post IDs (blind SQLi)
→ Inject poisoned changeset via batch → Create admin user
→ Login → Upload command plugin → Execute command → Cleanup
```
## 致谢
- **CVE-2026-60137** — `author__not_in` 中的 SQLi:由 TF1T、dtro、haongo 发现
- **CVE-2026-63030** — 批量路由混淆:由 Adam Kues (Assetnote / Searchlight Cyber) 发现
- PoC 实现:[sergiointel/wp2shell-poc](https://github.com/sergiointel/wp2shell-poc)
标签:CISA项目, WordPress, 安全, 超时处理, 逆向工具