无需密码,一个请求就能拿下你的服务器,深度详解近几年 WordPress 最严重的漏洞「wp2shell」
内容提要
WordPress核心发现高危漏洞“wp2shell”,由WP_Query SQL注入(CVE-2026-60137)和REST批处理路由混淆(CVE-2026-63030)组合而成。攻击者无需登录,仅需一个匿名请求即可绕过认证,执行任意代码,创建管理员并植入WebShell。该漏洞影响默认安装,PoC已公开,全球超40%网站面临风险。建议立即升级至7.0.2,禁用批处理API,并检查入侵痕迹。
延伸解读
漏洞组合的巧妙性
wp2shell 并非单一漏洞,而是两个漏洞的巧妙组合:一个需要认证的 SQL 注入(CVE-2026-60137)和一个权限绕过(CVE-2026-63030)。单独看,前者因需要登录而难以利用,后者因缺乏攻击目标而影响有限。但两者结合,路由混淆将恶意输入免认证地送到注入点,形成完整的攻击链。这种“1+1>2”的漏洞利用方式,凸显了复杂系统中组件交互可能带来的安全风险。
攻击链的五个关键步骤
攻击者仅需一个匿名请求,通过五个步骤即可控制服务器:首先利用批处理接口的路由混淆绕过认证;其次将恶意输入注入到 WP_Query 的 author__not_in 参数,触发 SQL 注入;然后伪造数据行,利用 oEmbed 缓存机制获得写入能力;接着伪造 customize_changeset 记录,提权到管理员上下文;最后创建管理员账号并植入 WebShell。整个过程无需任何前置条件,且 PoC 已公开,风险极高。
临时缓解措施的局限性
文章强调,禁用批处理 API 或使用 WAF 只是临时措施,并非修复。因为 WAF 规则可能被编码、大小写变换等方式绕过,且无法解决底层的 SQL 注入问题。持久化对象缓存(如 Redis/Memcached)虽可能阻断 RCE 链,但对 SQL 注入无效,攻击者仍可免认证读取数据库。因此,升级到 7.0.2 是唯一彻底的修复方式,临时方案仅为争取升级时间。
升级后的入侵痕迹排查
升级后应立即检查入侵痕迹,包括:用户列表中是否有未知管理员;插件列表是否有未安装的插件;wp_posts 和 wp_options 中是否有可疑数据行;访问日志中是否有针对 /batch/v1 的异常请求。这些检查有助于及时发现攻击者可能留下的后门或恶意账号,避免二次入侵。文章还提醒,AI 生成的插件代码可能缺乏安全防护,上线前需重点审查数据库查询、文件上传和权限判断等关键部分。
Q&A
wp2shell 漏洞是什么?为什么说它是近几年 WordPress 最严重的漏洞?
wp2shell 是 WordPress 核心中的一个预身份验证远程代码执行(RCE)漏洞,由两个漏洞组合而成:CVE-2026-60137(WP_Query SQL 注入)和 CVE-2026-63030(REST /batch/v1 路由混淆)。攻击者无需登录,仅需一个匿名 HTTP 请求即可在默认安装的 WordPress 上执行任意代码、创建管理员并植入 WebShell。它影响所有默认安装,且 PoC 已公开,全球超过 40% 的网站面临风险,因此被认为是近几年最严重的漏洞之一。
wp2shell 漏洞利用需要什么条件?攻击者需要登录吗?
不需要。wp2shell 漏洞利用无需任何前提条件,攻击者无需登录,只需发送一个匿名 HTTP 请求即可控制服务器。
wp2shell 是由哪两个漏洞组成的?它们各自的作用是什么?
wp2shell 由 CVE-2026-60137(WP_Query SQL 注入)和 CVE-2026-63030(REST /batch/v1 路由混淆)组成。CVE-2026-60137 是 SQL 注入漏洞,评分 9.1,但需要认证才能触发,相当于一把没开保险的枪;CVE-2026-63030 是路由混淆漏洞,评分 7.5,可以绕过认证,相当于一张通行证。两者配合,路由混淆将恶意输入免认证地送到 SQL 注入点,实现远程代码执行。
wp2shell 的攻击链是怎样的?攻击者如何一步步拿到 WebShell?
攻击链分为五步:1. 向 /wp-json/batch/v1 发送嵌套的格式错误的批处理请求,利用路由混淆绕过认证;2. 恶意输入到达 WP_Query 的 author__not_in 参数,触发 SQL 注入;3. 通过伪造数据行(如 oEmbed 缓存条目)获得写入能力;4. 伪造 customize_changeset 记录,提权到管理员上下文;5. 在同一个批处理请求中创建新管理员账号并植入 WebShell。整个过程只需一个匿名请求。
wp2shell 漏洞影响哪些 WordPress 版本?
SQL 注入漏洞(CVE-2026-60137)自 WordPress 6.8 版本起存在,路由混淆漏洞(CVE-2026-63030)自 WordPress 6.9 版本引入。因此,受影响的版本包括 6.8 至 7.0.1(7.0.2 已修复)。
如何修复 wp2shell 漏洞?临时措施有哪些?
最有效的修复方法是立即升级到 WordPress 7.0.2 或更高版本。临时措施包括:通过代码禁用批处理 API(如使用 rest_pre_dispatch 过滤器),或封禁 /batch/v1 路由。但临时措施只是权宜之计,不能替代补丁,且 WAF 规则可能被绕过。
升级后还需要检查哪些入侵痕迹?
升级后应检查:1. 用户列表中是否有不认识的管理员;2. 插件列表中是否有未安装过的插件;3. wp_posts 和 wp_options 表中是否有可疑数据行;4. 访问日志中是否有针对 /batch/v1 的异常请求。
使用 Redis 或 Memcached 持久化对象缓存能否防御 wp2shell?
不能完全防御。持久化对象缓存可能改变 transient 的写入路径,从而阻断 RCE 攻击链,但对底层的 SQL 注入无效,攻击者仍可免认证读取数据库。
wp2shell 漏洞与 AI 生成代码有什么关系?
文章提到,越来越多的人使用 AI 编写 WordPress 插件,但 AI 生成的代码往往只追求功能实现,而忽略安全防护,如输入校验、SQL 预处理、权限检查等。同时,攻击者也在利用 AI 快速分析漏洞和编写 exploit,这加剧了安全风险。因此,AI 生成的代码上线前必须进行安全审查,尤其是涉及数据库查询、文件上传和权限判断的部分。