CVE-2025-10194CVE-2025-10194是WordPress Shortcode Button插件中存在的一个存储型跨站脚本(Stored XSS)漏洞。该漏洞由Wordfence安全团队的安全研究员发现并报告,CVSS评分为6.4,属于中危级别漏洞。该漏洞影响Shortcode Button插件的所有版本,最高至1.1.9版本(含1.1.9版本)。
Shortcode Button是WordPress中一个广泛使用的短代码插件,允许用户在文章和页面中插入按钮元素。然而,由于该插件在处理'button'短代码时,对用户提供的属性参数缺乏充分的输入净化(input sanitization)和输出转义(output escaping)处理,导致恶意攻击者可以在短代码属性中注入任意JavaScript代码。这些恶意代码会被持久化存储在WordPress数据库中,每当有用户访问包含该短代码的页面时,注入的脚本就会自动执行。
该漏洞的成功利用需要攻击者拥有contributor(投稿者)级别或以上的WordPress账户权限。虽然这增加了一定的利用门槛,但许多WordPress站点允许用户注册并获得contributor级别权限,例如多作者博客、新闻网站和社区平台等。攻击成功后,攻击者可以窃取管理员和其他高权限用户的会话Cookie、篡改页面内容、进行钓鱼攻击或将恶意脚本重定向到恶意网站,对站点安全构成严重威胁。
该漏洞的根本原因在于Shortcode Button插件的shortcode-button.php文件第65行附近的代码逻辑中,对用户通过短代码属性传入的参数没有进行充分的输入验证和输出转义。
具体技术原理如下:
1. 短代码注册机制:插件通过WordPress的add_shortcode()函数注册了一个名为'button'的短代码。当用户在文章内容中输入形如[button url="..." label="..."]的代码时,WordPress核心会调用插件注册的回调函数来处理该短代码。
2. 属性处理缺陷:插件的回调函数从短代码属性中提取用户提供的值(如URL、标签文本等),但没有使用WordPress提供的安全函数(如esc_url()、esc_attr()、esc_html()、sanitize_text_field()等)对输入进行净化,也没有在输出时进行适当的转义处理。
3. 存储型XSS触发:攻击者利用contributor权限创建或编辑文章,在短代码属性中注入恶意JavaScript代码,例如:[button url='" onmouseover="alert(document.cookie)"' label="Click me"]。该内容被保存到WordPress的wp_posts数据库表中。
4. 恶意脚本执行:当任何用户(包括管理员)访问包含该短代码的页面时,WordPress渲染页面时会调用短代码回调函数,将未转义的用户输入直接输出到HTML中,导致浏览器解析并执行注入的恶意脚本。
5. 影响范围:由于该漏洞属于存储型XSS,恶意代码会被持久化存储,影响所有访问受影响页面的用户,且无需用户进行任何额外交互(UI:N),攻击影响范围广、持续时间长。