CVE-2025-12016CVE-2025-12016是WordPress qnotsquiz插件中的一个存储型跨站脚本(Stored XSS)漏洞。该漏洞存在于qnotsquiz_custom_start_text参数中,由于插件在处理用户输入时缺乏足够的输入清理(sanitization)和输出转义(output escaping),导致恶意脚本可以被永久存储在数据库中。攻击者利用此漏洞需要具备管理员级别权限,且该漏洞仅影响多站点(multi-site)WordPress安装或已禁用unfiltered_html功能的单站点安装。一旦恶意脚本被注入,当任何用户访问包含该脚本的页面时,脚本将自动执行,可能导致会话劫持、敏感信息窃取、恶意重定向等严重安全问题。此漏洞影响qnotsquiz插件1.0.0及以下所有版本,CVSS评分4.4,属于中等严重程度。
该漏洞的根本原因在于qnotsquiz插件对qnotsquiz_custom_start_text参数的处理不当。具体表现为:1)输入清理不足:插件未对用户输入进行严格的HTML标签过滤和JavaScript脚本过滤;2)输出转义缺失:当该参数值在页面中输出时,未进行适当的HTML实体编码或转义处理。攻击者(具有管理员权限)可以通过WordPress后台设置界面,在qnotsquiz_custom_start_text字段中注入包含JavaScript代码的恶意Payload,如<script>alert(document.cookie)</script>。由于存储型XSS的特性,该恶意脚本会随插件数据永久存储在WordPress数据库中。当其他用户访问使用该插件的页面时,浏览器会解析并执行注入的恶意脚本。值得注意的是,WordPress的多站点安装和禁用unfiltered_html的安装会移除默认的安全保护机制,使得普通管理员也能注入任意HTML/JavaScript代码,从而触发此漏洞。