CVE-2025-13839CVE-2025-13839是WordPress的LJUsers插件中存在的一个存储型跨站脚本(XSS)漏洞。该漏洞影响LJUsers插件1.2.0及以下所有版本。漏洞根源在于插件对ljuser短代码的name参数处理不当,未能对用户输入进行充分的输入清理和输出转义。攻击者通过利用此漏洞,可以在WordPress页面的ljuser短代码中注入任意JavaScript代码。由于该脚本会被永久存储在数据库中,任何访问包含恶意代码页面的用户都会自动执行这些脚本。攻击者利用此漏洞可以窃取用户会话cookie、劫持用户账户、进行钓鱼攻击或修改页面内容等恶意操作。漏洞需要攻击者具备Contributor级别或更高的权限才能利用,这降低了漏洞的利用门槛,因为Contributor是WordPress多作者博客中常见的角色。
该漏洞位于LJUsers插件的ljusers.php文件第194行附近。插件在处理[ljuser]短代码时,直接将用户提供的name参数值输出到HTML页面,而没有进行适当的输入验证和输出编码。具体来说,攻击者可以在短代码中使用类似name="><script>alert(document.cookie)</script>的payload来突破HTML属性上下文并注入脚本。由于WordPress的短代码机制会将这些恶意内容存储在文章/页面的数据库记录中,当其他用户访问这些页面时,恶意脚本会在其浏览器中执行。漏洞的技术根源是:1) 缺少对name参数的输入过滤(如htmlspecialchars()或esc_html());2) 缺少对HTML属性的正确转义(如在双引号属性中使用esc_attr());3) 缺少Content Security Policy (CSP)头部保护。攻击者利用此漏洞需要至少Contributor权限,可以通过在任意文章或页面中插入恶意短代码来触发。