Lukols-Dev/wp-cve-2026-63030-check
GitHub: Lukols-Dev/wp-cve-2026-63030-check
该工具通过被动版本检测与 REST 路由可达性探测,帮助运维人员快速筛查 WordPress 站点是否处于 wp2shell 漏洞链的受影响范围内。
Stars: 0 | Forks: 0
# wp2shell-check
WordPress **"wp2shell"** 认证前 RCE 链的非侵入式暴露检查工具
(CVE-2026-63030 + CVE-2026-60137)。
## 功能介绍
给定一个 URL,`wp2shell-check` 会:
1. 从主页的 `generator` meta 标签中读取 WordPress 版本(被动方式)。
2. 将其与受 wp2shell 漏洞链影响的版本进行比较。
3. 向 REST 批量 endpoint (`?rest_route=/batch/v1`) 发送一个良性的探测请求,以检查 REST 批量路由是否可达。
4. 打印一行判定结论。
它专为快速的服务器群分类筛选而设计:_我的哪些站点处于受影响版本且 REST 可达?_
## 它**不会**做什么
- 它**不会**发送 SQL 注入 payload 或触发路由混淆 bug。
- 它**不会**确认漏洞的可利用性。路由探测仅告知您批量路由已注册并在验证输入——这对于几乎所有默认安装且启用了 REST API 的站点都是如此(批量 endpoint 自 WordPress 5.6 起已进入核心代码库)。**版本检查才是核心判定信号。**
- 它是一种可达性与版本启发式检查,而不是一个 PoC(概念验证)。
## 漏洞说明 (wp2shell)
两个被链式利用的 WordPress Core 漏洞,已通过 **2026-07-17** 的紧急发布版本予以披露:
| CVE | 类型 | 受影响版本 |
| -------------- | -------------------------------------------- | ---------------------------------------------- |
| CVE-2026-63030 | REST API 批量路由混淆 (RCE 漏洞促成因素) | 6.9.0–6.9.4, 7.0.0–7.0.1 |
| CVE-2026-60137 | `WP_Query` `author__not_in` SQL 注入 | 6.8.0 及更高版本 (6.8.0–6.8.5 = 仅限 SQLi 的版本区间) |
被链式利用时,它们能让**未经认证的**攻击者达到 SQL 注入条件,并在默认安装的环境下升级为**远程代码执行 (RCE)**——无需插件,无需登录。RCE 这部分仅在未使用持久性 object cache 时适用。
**修复版本:** 6.8.6 (仅限 SQLi)、6.9.5、7.0.2 (以及 7.1 Beta 2+)。WordPress 已为受影响的站点启用了强制自动更新——请验证更新是否真正落实。
由 Adam Kues (Assetnote / Searchlight Cyber) 通过 WordPress 的 HackerOne 项目报告。
## 安装说明
要求 Python 3.9+ 以及 `requests`。
```
# 使用 uv
uv pip install requests
# 或普通的 pip
pip install requests
```
## 用法
```
python wp2shell.py https://target.example
```
输出示例:
```
https://target.example: VULNERABLE (RCE) [6.9.3]
```
## 结果解读
| 判定结论 | 含义 |
| ------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
| `VULNERABLE (RCE)` / `VULNERABLE (SQLi)` | 处于受影响版本**且** REST 批量路由可达 → 在默认安装下存在暴露风险。请参阅 _局限性_。 |
| `version-affected (...), route unconfirmed` | 版本处于受影响的区间内,但 REST 批量路由未按预期响应。 |
| `not affected` | 检测到 WordPress,但版本位于受影响区间之外。 |
| `wordpress not detected` | 未找到版本信息(REST 被锁定、`generator` 标签被移除,或非 WordPress)。 |
| `unreachable` | 主机未响应。 |
## 局限性
- **"VULNERABLE" 是暴露信号,而非确认。** 其含义为 _受影响版本 + REST 可达_。
它无法证明路由混淆/注入在该特定主机上可被利用。
- **持久性 object cache。** RCE 要求未使用持久性 object cache。一个站点可能处于受影响区间,但无法被利用实现 RCE - 并且本工具无法通过远程检测到这一点。
- **版本检测已尽最大努力。** `generator` 标签通常会被移除或伪造;缺失版本信息会导致显示 `wordpress not detected`,这并不能保证该站点是安全的或非 WordPress 站点。
- **每次运行仅支持单个 URL。** 除了控制台单行输出外,不支持批量输入、速率限制或其他输出格式。
## 修复建议
1. 将您的分支更新至 **6.8.6**、**6.9.5** 或 **7.0.2**(或更新版本),并确认更新已应用。
2. 如果无法立即修补,请在您的 WAF 处拦截 `/wp-json/batch/v1` 和 `?rest_route=/batch/v1`,
或限制对 REST API 的匿名访问。
## 免责声明
按“原样”提供,仅用于授权的安全测试和教育目的。您需对
您的使用方式自行承担全部责任。
## 参考链接
- WordPress 安全发布, 6.9.5 / 7.0.2 (2026-07-17)
- Cloudflare — WordPress 漏洞的 WAF 防护
- The Hacker News — wp2shell 相关报道
- ZeroSec (zsec.uk) — wp2shell 代码追踪深度剖析
标签:Python, WordPress, 实时处理, 插件系统, 无后门, 资产盘点, 逆向工具