__ ______ ____ ____ _ _ _____ _ _ \ \ / / _ \___ \/ ___|| | | | ____| | | | \ \ /\ / /| |_) |__) \___ \| |_| | _| | | | | \ V V / | __// __/ ___) | _ | |___| |___| |___ \_/\_/ |_| |_____|____/|_| |_|_____|_____|_____|wp2shell-checker | WordPress 批量 API 失同步检测器
用于 WordPress 核心 REST 批量 API 预认证 RCE 的检测器
由 0xjessie21 创建 — Cybersecurity ILCS
| 特征 | wp2shell / WP Core REST 批量 API 失同步 |
| 严重程度 | 9.8 严重(CRITICAL) — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| 受影响版本 | WordPress 6.9.0-6.9.4 和 7.0.0-7.0.1 |
| 修复版本 | 6.9.5、7.0.2 |
| 前置条件 | 无 — 未认证、无需插件、默认配置 |
| 模式 | 非破坏性 / 只读探测 |
工具在授权的内部 VAPT(漏洞评估与渗透测试)项目中检测到易受攻击 WordPress 实例的截图。

本工具仅用于授权的安全测试和防御性验证目的。
| 仅可对您拥有或已获得明确书面授权进行测试(例如已批准的内部 VAPT 范围)的 WordPress 实例使用。 | |
此探测被设计为非破坏性——它针对不存在的分类 ID(0),并在权限检查层停止,因此不会创建、修改或删除任何数据。 | |
| 请勿修改载荷(例如将分类 ID 改为真实 ID,或将其指向其他 REST 路由)以尝试实际利用。这样做会将其从检测器变成武器化漏洞利用——这明确不是本工具的构建目的,也不受支持。 | |
| 请勿在授权范围之外的系统上发布、再分发或运行本工具。针对第三方系统的未授权使用可能违反印度尼西亚的 ITE 法案(UU ITE) 以及其他国家/地区相应的计算机滥用法律。 | |
| 按原样提供,不附带任何担保。作者及任何相关组织对因使用本工具而产生的滥用、损害或法律后果不承担任何责任。 |
使用本工具即表示您同意自行全权负责确保您的使用符合适用法律及您所在组织的授权政策。
WordPress 核心的 REST 批量 API(/wp-json/batch/v1)在解析一批子请求时会保持三个并行数组的同步。一个故意构造的畸形子请求会使它们失去同步——导致每个后续子请求都被使用错误的处理器和权限回调进行分发。
本工具发送一个精心构造的批量请求,并且仅检查响应代码,绝不会进入改变状态的操作。
| # | 子请求 | 用途 |
|---|---|---|
| 0 | POST http://: | 故意构造的畸形请求——触发索引失同步 |
| 1 | DELETE /wp/v2/categories/0 | 安全传感器——分类 ID 0 永远不存在 |
| 2 | POST /wp/v2/block-renderer/core/paragraph | 用于检测泄漏的参考处理器 |
判定逻辑
| 结果 | 判定 |
|---|---|
block_cannot_read | VULNERABLE(易受攻击) — 权限检查从 block-renderer 处理器泄漏 |
rest_term_invalid | PATCHED(已修复) — categories 处理器响应正确 |
| 未发现任何标记 | INCONCLUSIVE(无法判定) — WAF、API 被禁用或非 WordPress |
此外,该工具还会从响应头执行被动 WAF/CDN 指纹识别:
Cloudflare · Sucuri · Akamai · AWS CloudFront · Imperva · Fastly · F5 BIG-IP · Wordfence
# Basic scan
./wp2shell_checker.py https://your-site.com
# Multiple targets in one run
./wp2shell_checker.py https://site1.com https://site2.com https://site3.com
# Custom timeout
./wp2shell_checker.py https://your-site.com --timeout 20
# Show full raw request/response (payload, headers, body)
./wp2shell_checker.py https://your-site.com --raw
# Disable colors/animation (for logging to a file)
./wp2shell_checker.py https://your-site.com --no-color > scan_report.txt
所有参数
| 参数 | 说明 |
|---|---|
targets | 一个或多个要扫描的基础 URL**(必需)** |
--timeout N | 请求超时时间(秒)(默认:10) |
--no-color | 禁用 ANSI 颜色和扫描动画 |
--raw | 打印完整的原始请求/响应载荷和标头 |
如果目标返回易受攻击:
7.0.2(或在 6.9 分支上更新至 6.9.5)。确认更新已实际生效。/wp-json/batch/v1 和 ?rest_route=/batch/v1——两种形式都必须阻止。| wp2shell.com | 原始检测器与安全公告,Searchlight Cyber |
| Hadrian Security — Technical Breakdown | 根本原因分析 |
本项目基于 MIT 许可证授权——详情请参阅 LICENSE 文件。
Cybersecurity ILCS · 专为内部防御用途构建