CVE-2025-11810CVE-2025-11810是WordPress平台上一款名为Print Button Shortcode的插件中存在的存储型跨站脚本(Stored XSS)漏洞。该插件允许用户在文章或页面中通过短代码(shortcode)插入打印按钮,方便访客快速打印页面内容。然而,在该插件1.0.1及之前的所有版本中,'print-button'短代码的'target'属性存在输入过滤和输出转义不足的问题,导致恶意脚本可以被持久化存储到网站页面中。
该漏洞由WordPress安全公司Wordfence的安全研究人员发现并报告,CVSS 3.1评分为6.4分,属于中危级别。漏洞的利用需要攻击者拥有至少贡献者(contributor)级别的WordPress账户权限,这意味着攻击者通常是已注册的用户或通过社会工程学手段获取低权限账户的攻击者。一旦恶意脚本被注入到页面中,任何访问该页面的用户(包括管理员)都会在浏览器中执行恶意代码。
存储型XSS的危害性较高,因为攻击载荷会持久存储在服务器端,每次用户访问受感染页面时都会自动执行,无需额外诱导。攻击者可以利用此漏洞窃取用户会话Cookie、劫持管理员账户、植入恶意重定向、进行钓鱼攻击,甚至在特定条件下实现权限提升。该漏洞已于2025年10月22日公开披露,对使用该插件的WordPress网站构成了显著的安全威胁。
该漏洞的根本原因在于Print Button Shortcode插件对短代码属性的处理逻辑中缺少充分的输入验证和输出转义机制。具体而言,'print-button'短代码的'target'属性用于指定打印按钮链接的目标窗口或框架(如'_blank'、'_self'等),但插件在处理该属性时直接将用户提供的值输出到HTML的target属性中,而未进行适当的HTML实体编码或过滤。
从技术实现角度来看,WordPress的短代码机制允许插件通过回调函数处理短代码属性。攻击者可以构造如下形式的恶意短代码:[print-button target='" onmouseover="alert(document.cookie)"']。当插件渲染该短代码时,未转义的恶意JavaScript代码将被直接嵌入到HTML的<a>标签的target属性中。浏览器在解析该HTML时,会将onmouseover事件处理器中的JavaScript代码视为合法的HTML属性,从而在用户与该元素交互时执行恶意脚本。
由于该漏洞属于存储型XSS,攻击者只需在投稿或页面内容中插入恶意短代码,保存后即被持久化存储在WordPress数据库中。每当普通用户或管理员访问包含该短代码的页面时,恶意脚本便会自动执行。攻击者可以利用此漏洞窃取认证Cookie、会话令牌,或通过伪造的管理员操作请求执行未授权操作,如创建新的管理员账户、修改网站设置等。