CVE-2025-11197CVE-2025-11197是WordPress Draft List插件(也称为simple-draft-list)中存在的一个存储型跨站脚本(Stored XSS)漏洞。该漏洞由WordFence安全团队的安全研究员发现,并于2025年10月11日公开披露。该漏洞的CVSS 3.1评分为6.4分,属于中危级别。
Draft List是一款用于在WordPress网站中显示草稿文章列表的插件,允许用户通过短代码(shortcode)将草稿列表嵌入到页面或文章中。然而,该插件在处理用户通过短代码属性传入的内容时,未能进行充分的输入过滤和输出转义,导致恶意攻击者可以将任意JavaScript代码注入到短代码属性中。这些恶意脚本随后会被存储在数据库中,每当有用户访问包含该短代码的页面时,注入的恶意脚本就会在受害者浏览器中执行。
由于该漏洞需要贡献者(contributor)级别及以上的认证权限才能利用,因此攻击者需要拥有一个有效的WordPress账户。不过,在许多允许多用户协作的WordPress网站(如新闻网站、博客平台、企业内部门户等)中,拥有贡献者级别权限的用户数量可能较多,这大大增加了漏洞被利用的风险。该漏洞的影响范围包括机密性和完整性的低级别影响,可能导致会话劫持、权限提升、网站内容篡改、恶意重定向等多种攻击行为。
该漏洞的核心问题在于Draft List插件的'drafts'短代码处理逻辑中缺乏对用户输入属性的充分验证和转义机制。具体技术细节如下:
1. **短代码机制**:WordPress短代码(shortcode)允许用户通过方括号语法(如[drafts])在文章或页面内容中嵌入动态功能。Draft List插件注册了'drafts'短代码,用于在页面中渲染草稿文章列表。
2. **属性注入点**:当用户在短代码中传入属性参数时,例如[drafts attribute="value"],插件将这些属性值直接用于渲染输出,但未对属性值进行适当的HTML实体编码或JavaScript关键字过滤。
3. **存储型XSS执行流程**:
- 攻击者(具有contributor及以上权限)创建一篇包含恶意短代码的文章,例如:[drafts title="<script>alert(document.cookie)</script>"]
- 插件在保存文章时未对短代码属性进行过滤,恶意脚本随文章内容一同存储到WordPress数据库中
- 当任何用户(包括管理员)访问包含该文章的页面时,WordPress解析短代码并调用插件的渲染函数
- 插件直接将未转义的属性值输出到HTML页面中,导致恶意JavaScript代码在受害者浏览器中执行
4. **CVSS向量分析**:CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N 表示该漏洞可通过网络利用,攻击复杂度低,需要低权限认证,无需用户交互,作用域发生变化,对机密性和完整性有低影响,不影响可用性。
5. **利用条件**:攻击者需要至少contributor级别的WordPress账户权限,利用成功后可在管理员等高权限用户访问页面时执行任意JavaScript代码,可能导致账户接管、敏感信息窃取等严重后果。