
2026年7月17日WordPress 官方紧急发布安全补丁修复了一个被称为wp2shell的严重漏洞链。该漏洞组合允许攻击者在无需任何登录凭证的情况下直接对默认安装的 WordPress 站点执行远程代码全球超过5亿个使用 WordPress 的网站面临被完全接管的风险。漏洞速览两条缺陷串联成致命攻击链这次安全事件涉及两个独立的 CVE 编号但真正的威胁来自它们的组合利用表格漏洞编号CVSS 评分缺陷类型修复版本当前利用状态CVE-2026-630309.8严重REST API 批量路由混淆6.9.5、7.0.2已有公开 PoC在野利用已确认CVE-2026-601375.9WP_Query SQL 注入6.8.6、6.9.5、7.0.2同上CVE-2026-63030是整个攻击链的钥匙。它存在于 WordPress 的 REST API 批量处理端点/wp-json/batch/v1该端点原本设计用于一次性执行多个子请求。然而当某个子请求的路径解析失败时系统只会将错误结果推入验证数组却遗漏了匹配数组的同步更新。这种数组索引错位导致后续子请求被错误地分配到其他路由的处理程序下——Searchlight Cyber 的研究团队将其命名为路由混淆Route Confusion。CVE-2026-60137则是一个潜伏在WP_Query类中的 SQL 注入缺陷。author__not_in参数本应接收数组类型但代码中的类型检查逻辑存在疏漏当传入字符串而非数组时净化流程被完全跳过攻击者构造的恶意内容直接拼接到 SQL 语句中。单独来看SQL 注入点需要认证才能触达路由混淆本身也无法直接造成数据泄露。但将两者串联后攻击者就能借助批量端点的路由混乱把恶意请求走私到原本受保护的查询路径在零认证的前提下完成盲注 SQL 注入进而读取数据库中的管理员密码哈希。为什么这次漏洞格外危险WordPress 目前支撑着全球约43%的网站活跃安装量超过 5 亿。这意味着 wp2shell 的影响面远超一般的插件漏洞。更关键的是这是一个纯核心漏洞——不需要安装任何第三方插件也不需要特殊的主题配置甚至连管理员账号都不需要。只要目标站点运行在受影响的版本上任何匿名访客发送一个精心构造的 HTTP 请求就能触发完整的攻击链路。披露后的 24 小时内GitHub 上已出现多个可运行的概念验证代码。Tenable、Qualys、Cloudflare 等多家安全厂商相继确认在野利用活动的存在。WordPress.org 团队甚至罕见地启用了强制自动更新将受影响版本批量推送补丁——这从侧面反映出问题的紧迫程度。攻击链路拆解从匿名请求到服务器沦陷整个 wp2shell 利用过程需要两次嵌套的路由混淆操作技术细节如下攻击者首先向/wp-json/batch/v1发送外层批量请求其中第一个子请求使用故意损坏的路径如http://:触发WP_Error。这导致$matches数组与$requests数组产生一位偏移第二个子请求伪装成分类目录查询被错误地分配给了批量处理端点本身。在这个外层混淆的掩护下攻击者在子请求体中嵌套了第二层批量请求。内层请求再次使用相同的路由错位技巧使得一个针对文章查询的GET请求被赋予了未经过滤的author_exclude参数。该参数最终映射到WP_Query的author__not_in由于类型检查失效恶意字符串直接注入 SQL 语句。从 SQL 注入到完整的远程代码执行通常还需要最后一步。目前公开的技术分析显示攻击者主要通过两种方式完成提权一种是利用UNION SELECT配合INTO OUTFILE将 PHP WebShell 写入网站根目录前提是数据库用户拥有FILE权限另一种是提取管理员密码哈希后进行离线破解随后登录后台上传恶意插件。值得注意的是部分最新公开的 PoC 声称已经实现了不依赖密码破解的直接预认证 RCE。另外Cloudflare 的安全分析指出如果站点配置了持久化对象缓存如 Redis 或 Memcached某些 RCE 利用路径可能无法直接生效但 SQL 注入本身依然可被利用。默认安装未启用对象缓存的站点则完全暴露在风险之下。你的站点是否在影响范围内不同版本的 WordPress 面临的威胁程度并不相同面临完整 RCE 攻击链最高风险WordPress 6.9.0 至 6.9.4WordPress 7.0.0 至 7.0.1这些版本同时包含 CVE-2026-63030 和 CVE-2026-60137攻击者无需任何前置条件即可实现远程代码执行。仅受 SQL 注入影响中等风险WordPress 6.8.0 至 6.8.56.8 分支包含 CVE-2026-60137 的脆弱代码但由于 REST API 批量路由混淆是在 6.9 版本引入的因此无法构成完整的 RCE 链。不过如果站点安装了某些插件或主题为author__not_in提供了外部输入路径SQL 注入依然可能被单独利用。安全版本WordPress ≥ 7.0.2WordPress ≥ 6.9.5WordPress ≥ 6.8.66.8 之前的旧版本不受此次漏洞影响。修复与应急现在就该做的事首要且唯一的长期解决方案立即升级。运行 WordPress 7.0.x 的站点请升级到7.0.2运行 WordPress 6.9.x 的站点请升级到6.9.5运行 WordPress 6.8.x 的站点请升级到6.8.6WordPress 官方已针对受影响版本强制推送了自动更新但如果你的站点关闭了自动更新功能或者使用了托管服务商的延迟更新策略务必手动执行升级。临时缓解措施无法立即打补丁时在 Web 应用防火墙WAF层面拦截对以下路径的匿名访问/wp-json/batch/v1?rest_route/batch/v1同时你也可以通过插件或服务器配置要求对批量处理端点进行身份验证。但请明确——这些只是权宜之计绝不能替代正式补丁。此外建议检查 MySQL 数据库用户的权限撤销FILE权限可以阻断通过INTO OUTFILE写入 WebShell 的利用路径。在 MySQL 中执行sqlREVOKE FILE ON *.* FROM wp_user%;同时确保secure_file_priv参数设置为非空路径限制数据库文件的导出位置。写在最后wp2shell 并非 WordPress 历史上第一个核心漏洞但它很可能是近年来影响面最广、利用门槛最低的一个。从披露到在野利用时间窗口短得惊人这再次提醒我们核心系统的安全更新没有等等看的选项。如果你的站点还在运行 6.9 或 7.0 的未修复版本每一分钟的延迟都在增加被攻陷的概率。现在就去检查你的 WordPress 版本号并应用对应的安全补丁。对于安全运维人员建议同时审查过去几天的 Web 访问日志关注对/batch/v1端点的异常 POST 请求以及数据库中是否出现了陌生的管理员账户或 oEmbed 缓存记录。