CVE-2025-13884CVE-2025-13884是WordPress平台上一款名为"Hide Email Address"插件的安全漏洞。该插件主要用于在WordPress页面中隐藏电子邮件地址,防止垃圾邮件机器人的采集。然而,由于插件在处理用户输入的inline_css参数时存在严重的输入验证缺陷,导致任何具有Contributor权限或更高权限的认证用户都可以利用此漏洞在受影响的页面中注入任意恶意JavaScript代码。
该漏洞属于存储型跨站脚本攻击(Stored XSS),这意味着攻击者注入的恶意脚本会被永久存储在网站的数据库中。当其他用户访问包含恶意代码的页面时,浏览器会自动执行这些脚本,从而可能导致会话劫持、敏感信息窃取、钓鱼攻击等严重安全后果。由于WordPress的广泛使用,该插件的漏洞可能影响大量使用该插件的网站。
攻击者仅需要获得WordPress的Contributor角色权限即可实施攻击,这降低了攻击的门槛。攻击成功后,恶意脚本可以在管理员或其他用户访问被注入页面时自动执行,攻击者可以窃取管理员的会话cookie、凭据或其他敏感信息,甚至可能在某些情况下获得网站服务器的控制权限。
该漏洞的CVSS评分为6.4,属于中等严重程度,主要因为其攻击复杂度较低(AC:L),但由于需要一定的认证权限(PR:L)且不影响系统可用性(A:N),因此被评为中等风险。
该漏洞的根本原因在于Hide Email Address插件的BgHideEmailAddress.php文件第101行附近的代码处理逻辑中存在输入验证不足的问题。插件通过WordPress的shortcode机制提供功能,用户可以通过在页面内容中插入[bg-hide-email-address]短代码来调用插件功能。
问题出在inline_css参数的处理上。当用户通过短代码传递inline_css参数时,插件直接将用户提供的CSS样式值输出到HTML页面,而没有进行适当的输入清理和输出转义。具体来说,插件应该对用户输入的CSS内容进行白名单过滤或完全转义,但实际实现中并未做到这一点。
攻击者可以利用此漏洞构造如下Payload:[bg-hide-email-address inline_css="任意恶意内容"],恶意内容会被直接嵌入到页面的<span>标签中。例如,攻击者可以注入:inline_css=" onload=alert(document.cookie) x=",这会在HTML中生成一个带有onload事件处理器的span标签,当页面加载时自动执行JavaScript代码。
由于插件没有对inline_css参数进行任何过滤或转义,攻击者可以注入任意属性和事件处理器,包括img标签的onerror、body的onload、iframe的onsrc等。这种攻击方式不需要用户交互(UI:N),只要页面被访问就会触发恶意脚本执行。
漏洞利用的关键因素包括:1)攻击者需要是WordPress的认证用户且至少具有Contributor权限;2)攻击者需要能够创建或编辑WordPress内容(文章、页面等);3)恶意脚本会被永久存储在数据库中,影响所有访问该页面的用户。