尽快检查修复!无需账号、默认配置,一个请求直接 getshell——WordPress 史上最严重的 Core 漏洞!
原创
CabinQ
CabinQ
逆熵寻生
2026年7月21日 09:01
浙江
在小说阅读器读本章
去阅读
WordPress 史上最严重的 Core 漏洞:无需账号、默认配置,一个请求直接 getshell
2026年7月17日,WordPress 社区炸了锅。
安全团队 Searchlight Cyber(原 Assetnote)披露了一个 Core 级别的远程代码执行漏洞,代号 wp2shell,对应两个 CVE 编号:CVE-2026-63030 和 CVE-2026-60137。
这个漏洞有多严重?一句话总结:
不需要账号、不需要插件、不需要用户交互,默认安装的 WordPress 就能被打穿,直接 getshell。
要知道,WordPress 驱动着全球约 43% 的网站。这次出问题的是 WordPress 本体,不是某个第三方插件——这意味着,只要版本在影响范围内,你就已经暴露在攻击面下了。
发生了什么?
wp2shell 其实是两个漏洞的组合拳:
第一拳:CVE-2026-63030 —— REST API 路由混淆
WordPress 的 REST API 有一个 /batch/v1 端点,允许把多个子请求打包在一次 HTTP 调用中执行。每个子请求本应独立验证、独立分配处理器。
但 servebatchrequestv1() 函数有个致命的 bug:它维护了两个并行数组——$matches(匹配的处理器)和 $validation(验证结果)。当某个子请求的路径在 wpparse_url() 解析失败时,它只会追加到 $validation 数组,而不会进入 $matches 数组。
结果就是:数组错位了。后续的子请求会被错误地分配到其他处理器,绕过了原本的安全检查。
第二拳:CVE-2026-60137 —— WP\_Query SQL 注入
路由混淆之后,攻击者可以在内层请求中夹带一个 authorexclude 参数。这个参数在正常的用户查询端点中不会被接受(所以验证直接放行),但当它被错误地路由到 posts 处理器时,会映射到 WPQuery 的 author_notin 查询变量——而这个变量在构建 SQL 时没有做整型转换。
布尔盲注和时间盲注,就这么形成了。
攻击链全景
整个攻击过程不需要任何前置条件,一个匿名的 HTTP 请求就能启动:
- 向 /wp-json/batch/v1 发送精心构造的嵌套批量请求
↓ - 外层 POST /wp/v2/posts 被错误地路由到 batch handler
(绕过了 GET 方法白名单检查)
↓ - 内层 GET /wp/v2/users 携带恶意 author\_exclude 参数
被路由到 posts 的 get\_items(),触发 SQL 注入
↓ - 通过盲注提取管理员密码哈希
↓ - 离线破解密码 → 登录后台
↓ - 上传恶意插件 → getshell
从\"一个匿名请求\"到\"完全控制服务器\",中间可能就差一个弱密码的距离。
影响范围
| 版本 | 状态 |
|---|---|
| ≤ 6.8.5 | 不受影响(无路由混淆漏洞) |
| 6.9.0 - 6.9.4 | 受影响 |
| 7.0.0 - 7.0.1 | 受影响 |
| 6.9.5 | ✅ 已修复 |
| 7.0.2 | ✅ 已修复 |
| 7.1 Beta 2 | ✅ 已修复 |
注意:6.8.x 版本虽然也受 CVE-2026-60137(SQL 注入)影响,但由于不存在路由混淆漏洞,完整的 RCE 链无法利用。
PoC 工具
目前已有公开的 PoC 工具。各位大佬可网上搜索,需要我提供的,在留言区留言:wp2shell-poc
1. 漏洞检测(check)
./wp2shell.py check http://target
加 --confirm-sqli 可进一步确认 SQL 注入路径
./wp2shell.py check http://target --confirm-sqli
2. 数据提取(read)
读取数据库指纹
./wp2shell.py read http://target
提取用户登录名和密码哈希
./wp2shell.py read http://target --preset users
自定义 SQL 查询
./wp2shell.py read http://target --query\"SELECT @@version\"
3. 后渗透 getshell(shell)
使用破解后的管理员凭据上传插件 webshell
./wp2shell.py shell http://target --user admin --password'cracked\_password' --cmdid
交互式 shell
./wp2shell.py shell http://target --user admin --password'cracked\_password'-i
怎么防?
最优先:立即升级。
WordPress 已经发布了修复版本,并启用了强制自动更新。如果你在用 6.9.x 或 7.0.x,请立刻升级到:
🔹 6.9.5 或 7.0.2 及以上
暂时无法升级的缓解措施:
1. WAF/反向代理层面:拦截对 /wp-json/batch/v1 和 /?rest_route=/batch/v1 的请求
2. 安装 Disable WP REST API 插件:禁止未认证用户访问 REST API(可能影响正常功能)
3. 使用 Searchlight Cyber 提供的自定义插件(详见 wp2shell.com),强制 REST Batch API 需要身份验证
4. 审计日志:排查对 /batch/v1 端点的异常批量请求
Cloudflare 已经在全线产品(包括免费版)部署了 WAF 规则来拦截相关攻击,但官方强调:WAF 只是临时手段,升级才是正解。
最后
wp2shell 是近年来 WordPress 最严重的 Core 级别漏洞之一。它的可怕之处在于:
🔹 零前置条件:不需要账号、不需要插件、不需要用户交互
🔹 默认配置即中招:全新安装的 WordPress 也逃不掉
🔹 攻击面巨大:全球 43% 的网站跑着 WordPress
🔹 PoC 已经公开:大规模扫描和自动化利用可能已经在路上
如果你管理着 WordPress 站点,现在就去检查版本。升级,现在就去。 🌶️
🎯 关注我,持续不断地成长!
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论