Blackbox、非侵入式检测器,针对 wp2shell —— 于 2026-07-17 披露的 WordPress 核心预认证 RCE 链:
/wp-json/batch/v1)中的路由混淆:子请求的路径未通过 wp_parse_url() 时,会落入验证数组但不在处理程序数组中,导致两者失步。WP_Query 的 author__not_in 处理中的 SQL 注入,可通过上述路由混淆在预认证状态下触达。串联后,匿名攻击者可伪造管理员账户并植入插件 WebShell —— 在默认安装上,无需任何插件或主题。
完整技术文章: https://own2pwn.fr/articles/appsec/wp2shell-wordpress-rce
它检测暴露面。它不利用任何漏洞。它发出的每个请求都是爬虫可能发送的普通只读请求:
generator 标签也能被识别:generator meta 标签、核心资源 ?ver=(位于 /wp-includes/ 和 /wp-admin/ 资源,这些跟随核心版本)、RSS feed generator(?v=)、/wp-links-opml.php、登录页资源、/wp-includes/version.php、readme.html 以及 /wp-json/ 索引。来源会互相校验,并报告置信度(≥2 个来源一致时为 high)。OPTIONS 请求(以及 REST 索引)检查 REST 批量路由 —— 该请求返回路由 schema,绝不调用处理器 —— 以判断是否存在边缘缓解措施。Link 标头或资源 URL —— 常见于无头/Next.js 前端),该工具会报告这一点,--discover 也会扫描它。没有请求会触发漏洞。没有 POST /wp-json/batch/v1、没有 author_exclude、没有 SQL。如果核心版本被隐藏,工具会如实说明,而不是猜测(盲目确认 wp2shell 需要实际利用它)。
弹性: 带退避的重试、gzip/deflate 解码、https→http 回退、跨主机重定向跟随、类似浏览器的 User-Agent(可覆盖),以及并行多目标扫描。
| 范围 | 暴露风险 | 修复版本 |
|---|---|---|
| 6.8.0 – 6.8.5 | 仅 SQL 注入(无 RCE) | 6.8.6 |
| 6.9.0 – 6.9.4 | 预认证 RCE | 6.9.5 |
| 7.0.0 – 7.0.1 |
pip install wp2shell-detect
或者直接从源码运行(单文件、无依赖、Python 3.8+):
git clone https://github.com/own2pwn-fr/wp2shell-detect
./wp2shell-detect/wp2shell_detect.py https://example.com
零依赖。Python 3.8+。
wp2shell-detect https://example.com
wp2shell-detect --json https://a.example https://b.example
wp2shell-detect --targets hosts.txt --workers 16 # parallel sweep
wp2shell-detect --discover https://front.example # follow headless WP
(从 PyPI 安装后,命令为 wp2shell-detect。从克隆的仓库中,使用相同参数调用 ./wp2shell_detect.py。)
选项:--json、--discover、--workers N、--timeout S、--user-agent UA、--insecure、--targets FILE。如果发现任何目标存在漏洞,退出码为 2(便于 CI / cron 扫描)。
现代网站通常在 www. 上提供 JS/Next.js 前端,并将 WordPress 保持在兄弟主机(wordpress.、wp.、cms.)上。扫描 www. 会返回 not WordPress —— 这是正确的,因为该主机不是 WordPress。将扫描指向 WordPress 主机,或传入 --discover,让工具从前端的 CSP / Link 标头 / 资源 URL 自动发现并扫描它。
示例:
[!!] https://blog.example.com -> VULNERABLE (pre-auth RCE)
version : 6.9.3 (generator meta tag=6.9.3, RSS feed generator=6.9.3)
batch : reachable (/wp-json/batch/v1)
cves : CVE-2026-63030, CVE-2026-60137
note : WordPress 6.9.3 is in the wp2shell pre-auth RCE range. REST batch endpoint reachable — no edge mitigation.
将 WordPress 核心升级到 6.8.6 / 6.9.5 / 7.0.2 或更高版本。如果必须等待补丁,则在边缘阻止批量路由(/wp-json/batch/v1 和 ?rest_route=/batch/v1),或通过钩住 rest_pre_dispatch 的 must-use 插件来阻止,然后审计是否存在恶意管理员账户和未知插件。
仅限授权评估。针对您既不拥有也无权测试的系统运行此工具,在您所在司法管辖区可能属于违法行为。您需对自身使用方式负责。
MIT。参见 LICENSE。作者:own2pwn。
| 7.0.2 |