文章总结: WordPress核心漏洞wp2shell(CVE-2026-63030和CVE-2026-60137)允许匿名攻击者在默认配置下通过单个HTTP请求实现远程代码执行。攻击链利用RESTAPI路由混淆和SQL注入提取管理员密码哈希,进而获取服务器控制权。影响WordPress6.9.0至7.0.1版本,PoC已公开。最优先的修复措施是立即升级至6.9.5或7.0.2及以上版本,临时缓解措施包括WAF拦截和禁用RESTAPI。 综合评分: 90 文章分类: 漏洞分析,应急响应,安全意识
尽快检查修复!无需账号、默认配置,一个请求直接 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 站点,现在就去检查版本。升级,现在就去。 🌶️
🎯 关注我,持续不断地成长!
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:逆熵寻生 CabinQ CabinQ《尽快检查修复!无需账号、默认配置,一个请求直接 getshell——WordPress 史上最严重的 Core 漏洞!》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论