一个命令行工具,用于检查 WordPress 站点是否暴露于 WP2Shell (CVE-2026-63030 和 CVE-2026-60137)。它通过只读请求读取 WordPress 版本和 REST API 暴露面, 并给出判定结果。它不会利用任何漏洞。
[!WARNING] 仅限授权测试使用。请仅对您拥有或已获得书面许可的站点使用。 作者(
DanSec)对滥用或造成的损害不承担任何责任。
WP2Shell 通过 /wp-json/batch/v1 端点,将 SQL 注入(CVE-2026-60137)与 REST 批量处理器缺陷
(CVE-2026-63030)串联利用,可在默认 WordPress 安装上实现未认证的远程代码
执行。这两个 CVE 均已被列入 CISA 已知被利用漏洞目录。
| 分支 | 受影响版本 | 修复版本 |
|---|---|---|
| 6.9.x | 6.9.0 至 6.9.4 | 6.9.5 |
| 7.0.x | 7.0.0 至 7.0.1 | 7.0.2 |
| 7.1 及更高版本 | 不受影响 | 不适用 |
需要 Python 3.8 或更高版本。
pip install -r requirements.txt
requests 和 rich 为必需依赖。sublist3r 为可选依赖(子域名枚举)。
如需更广泛的枚举,请安装 subfinder
(Go 二进制文件,非 pip 包)并传入 --subfinder。
# 检查单个主机
python wpScanner.py example.com --passive
# 枚举根域名的子域名并逐一检查
python wpScanner.py example.com --subfinder --threads 8
结果也会写入 CSV。当版本来源不一致时,工具会按最低版本进行分类,
以避免误报为全部安全。远程检查无法看到版本字符串未改变的后移植补丁,
因此在您控制的主机上,wp core version 才是最终依据。
将核心更新至 6.9.5、7.0.2 或 7.1 及以上版本(wp core update)。如果暂时无法修补,
请在防火墙处阻止 /wp-json/batch/v1,并限制匿名 REST 访问。
本工具仅供授权防御性使用。您有责任确保对指向的任何主机拥有检查权限。
| 选项 | 描述 | 默认值 |
|---|
-o, --output | CSV 输出文件 | WP2Shell_output.csv |
--passive | 仅检查指定主机,跳过枚举 | 关闭 |
--subfinder | 将 subfinder 添加为子域名来源 | 关闭 |
--threads | 并发工作线程数 | 1 |
--retries | 每个主机的重试次数 | 1 |
--rate-limit | 每秒最大请求数(单线程,0 表示无限制) | 0 |
| 判定 | 含义 |
|---|
VULNERABLE | 受影响版本且批量端点可访问。 |
LIKELY_MITIGATED | 受影响版本,但批量端点似乎被阻止或 REST 已被禁用。 |
PATCHED | 已修复版本,或早于受影响版本。 |
VERSION_UNKNOWN | 检测到 WordPress,但无法读取版本。 |
NOT_WORDPRESS | 未检测到 WordPress 指纹。 |
ERROR | 无法访问或网络错误。 |