WordPress 开发团队于 2026 年 9 月 17 日发布 7.1.1,修复一个被安全团队 pwn.ai 命名为 Click2Shell 的核心漏洞:攻击者只需构造一条特制链接,管理员在已登录状态下打开,浏览器就会自动安装攻击者指定的主题,无需点击“安装”,也不需要知道管理员密码。该漏洞影响 WordPress 6.0 至 7.1.0,独立利用的 CVSS 3.1 评分为 7.1,与一款存在缺陷的主题组合后形成的完整攻击链可达成远程代码执行,评分升至 9.6。
事件概述
7.1.1 包含 17 项核心修复、19 项区块编辑器修复与 12 项安全修复,Click2Shell 是官方重点说明的一项。WordPress 的描述相对克制:特制 URL 可以自动安装并预览来自 WordPress.org 的未激活主题。pwn.ai 则把链路讲得更清楚——核心问题只能强制安装官方目录中真实存在的主题,真正达到代码执行还需被安装的主题自身存在第二个缺陷。该漏洞尚未分配 CVE 编号,WordPress 表示正在申请;修复已回溯到包括 4.7 在内的受支持分支,旧分支也需同步升级。
技术细节:URL 参数的双重解析错位
根因是两个组件对同一条 URL 的理解不一致。攻击者构造的主题预览链接中,参数会先后经过 WordPress.org 主题 API 和管理员浏览器的 JavaScript 处理:主题 API 把该参数当作普通主题 slug 并返回一个合法主题,而浏览器端保留了原始字符,把未经转义的字符串直接拼进 jQuery 选择器。攻击者只需在参数中加入引号、组合符或注释等 CSS 结构字符,选择器逻辑就会被牵引到页面上的“安装”按钮,随后由 WordPress 自身的脚本完成点击。由于管理员处于已登录状态,安装所需的权限校验与安全令牌均由浏览器会话自动提供,攻击者无需提供任何凭证。
补丁位于变更集 63664,把原先的选择器改为限定 div.theme 并对 slug 做转义:
- $('div[data-slug="' + slug + '"]').trigger('click');
+ $('div.theme[data-slug="' + $.escapeSelector(slug) + '"]').trigger('click');
改动把匹配范围约束到真实主题卡片,并在 slug 进入选择器语法前完成转义,注入字符只能作为普通 slug 字符处理。
影响评估
被安装的主题不会自动激活,网站外观不会立刻变化,这让攻击更隐蔽。但主题即使未激活,其 PHP 仍可能被加载:WordPress 通过自定义器生成预览时会执行未激活主题的 PHP,端点或单个文件也可能被直接访问。一旦走到这一步,主题即可读取 wp-config.php 与数据库凭证、篡改应用文件,直至控制整站。pwn.ai 演示时使用的是官方目录中的真实主题 Mobile Repair Zone,其后端处理器会下载并执行任意安装包,既不校验权限也不验证令牌,攻击链因此闭合。该漏洞需管理员已登录且此前访问过攻击者页面,未见真实攻击;与 7 月已被 CISA 收录的 wp2shell 无关。
修复建议
- 立即升级核心:7.1 系列升级到 7.1.1,旧分支安装对应安全版本,升级后核实实际版本号;
- 无替代缓解措施:官方与 pwn.ai 均未提供补丁之外的临时方案;
- 盘点主题与插件:删除不再使用的主题与插件,并把保留的第三方组件更新到最新版本;
- 回溯排查:漏洞窗口期内运行过未修复版本的站点应检查非预期的主题安装记录。