WordPress Comment2Shell 漏洞可通过管理员会话将匿名评论 XSS 变成 RCE
- 浏览次数 2078
- 喜欢 0
WordPress 核心中的一个新缺陷让匿名访客能够发表一条评论,在页面上植入一个隐藏脚本。如果已登录的管理员随后打开该页面,该脚本就可以在网站服务器上运行代码。
WordPress 已于 9 月 17 日在 7.1.1 版本中修复了该漏洞(编号为 CVE-2026-93485,被称为 "Comment2Shell"),并告诉网站所有者立即更新。报告该漏洞的研究员表示,他不知道它被用于攻击中,且它不在美国政府积极利用的软件漏洞列表上。
分配该编号的公司 Patchstack 将该漏洞评为 CVSS 满分 10 分中的 7.1 分。
WordPress 在评论保存时会检查其中是否含有危险 HTML,然后在页面显示时重新格式化它,而该缺陷就存在于这两个步骤之间的缝隙中。
报告该漏洞的安全研究员 Rafie Muhammad 于 9 月 21 日在一篇文章中梳理了完整链条。诀窍是在评论中一个被允许的 HTML 标签的属性内放置一个换行符。
当 WordPress 为显示而重新格式化评论时,其步骤之一会拆散该标签,并将攻击者的文本移到一个浏览器将其视为活动事件处理程序的位置。该处理程序在页面加载时自动运行,无需点击。
该脚本在打开页面的任何人(无论是否登录)的浏览器中运行,并以该人对网站的访问级别行事。
在服务器上运行代码还需要一个条件:必须由一名已登录的管理员打开带有该评论的页面。
随后,该脚本可以利用管理员自己的会话上传一个包含 web shell 的插件——一个小文件,执行攻击者发送的任何命令。以这种方式上传插件是一条已知的、从管理员浏览器到服务器控制权的路径。Muhammad 表示,完整链条已被端到端确认可行。
该攻击还依赖于网站显示评论的方式。它在使用块主题的网站上有效,而 Muhammad 指出自 Twenty Twenty-Two 以来的每个默认 WordPress 主题都是块主题。在使用经典主题的网站上,它仅对包含评论块的文章或页面有效。
要让这一切发生,评论必须先出现在页面上。WordPress 将该缺陷描述为仅在 "以评论获得批准为前提" 下才可利用。
但评论审核默认是关闭的,且保留首次评论者的设置可以被绕过,因此评论可以在无人批准的情况下到达页面。正如 Patchstack 所说:"审核不是一种安全控制。"
应对措施
更新到 WordPress 7.1.1,或更新到所在分支仍在获得安全修复的最新版本。受影响版本从 4.7 到 7.1,以下是当前分支的修复版本:
- WordPress 7.1:更新到 7.1.1
- WordPress 7.0:更新到 7.0.5
- WordPress 6.9:更新到 6.9.8
- 更早的分支(早至 4.7):安装对应分支的修复版本,最早可至 4.7.36,已在 WordPress 的发布文档中逐个列出
无法立即更新的网站可以通过关闭文章评论或全站关闭评论来封堵入口,Web 应用防火墙或安全插件也可能拦截特制的评论。
WordPress 和研究员均未发布单独的临时解决方案。Muhammad 建议直接更新 WordPress 核心,并指出 7.1.1 是一个安全版本。更新可修复漏洞,但不会撤销攻击者已经做出的改动。有理由认为自己被盯上的网站还应检查是否存在其不认识的插件或文件。
WordPress 7.1.1 总共修复了 11 个安全问题。这个评论漏洞是唯一一个无需账户的攻击者就能触及的,其余大多数都需要具有一定访问级别的已登录用户。
同一版本还修复了另一个名为 Click2Shell 的缺陷:一个特制链接可让 WordPress 安装一个主题,并结合该主题中的第二个弱点在服务器上运行代码。它同样需要一名已登录管理员打开该链接。
WordPress 核心今年还出现过其他严重漏洞。7 月,一个名为 wp2shell 的缺陷让攻击者无需任何登录即可运行代码,美国当局后来将其列入真实攻击中被使用的漏洞名单。
8 月,研究人员利用登录页面中的一个脚本缺陷以管理员身份执行代码。这些是与评论漏洞相互独立的缺陷。