CVE-2025-12650CVE-2025-12650是WordPress Simple Post Listing插件中的一个存储型跨站脚本(XSS)漏洞。该插件是一款用于在WordPress网站上展示文章列表的插件,提供了便捷的短代码功能。然而,在0.2及以下所有版本中,插件对用户提供的属性参数缺乏充分的安全验证和输出编码处理。漏洞主要存在于postlist短代码的class_name参数中,攻击者可以通过该参数注入恶意JavaScript代码。由于该漏洞属于存储型XSS,恶意脚本会被永久保存在服务器端,任何访问包含该脚本页面的用户都会触发攻击。对于拥有贡献者(contributor)级别权限及以上的认证用户,他们可以利用此漏洞在页面中注入任意JavaScript代码,窃取用户会话cookie、劫持用户操作或进行钓鱼攻击。由于WordPress管理员经常访问后台管理界面,这类存储型XSS漏洞的威胁程度相对较高,攻击成功后可能进一步导致网站完全沦陷。
该漏洞的根本原因在于Simple Post Listing插件在处理短代码属性时未对用户输入进行适当的sanitization和output escaping。具体来说,当用户在文章或页面中使用[postlist class_name="xxx"]短代码时,插件直接将class_name参数的值嵌入到HTML元素的class属性中,而没有对特殊字符进行转义处理。攻击者可以构造如[postlist class_name="xss onclick=alert(document.cookie)//"]的短代码,其中双引号用于提前闭合class属性,后面的onclick事件处理器会被解析执行。由于插件在数据库中存储了包含恶意代码的文章内容,当其他用户访问该页面时,恶意脚本会在其浏览器上下文中执行。此外,该漏洞要求攻击者具有至少contributor级别的WordPress账号权限,但这个级别的账号在WordPress多用户环境中是常见配置。攻击者可以利用此漏洞窃取管理员cookie,从而获取后台管理权限,甚至进一步上传恶意插件实现持久化控制。修复方案需要在输出class_name参数值时使用esc_attr()函数进行HTML实体转义。