CVE-2025-10139CVE-2025-10139是WordPress WP BookWidgets插件中存在的一个存储型跨站脚本(Stored XSS)漏洞。该漏洞由WordFence安全团队的安全研究员发现,CVSS评分为6.4分,属于中危级别漏洞。该漏洞影响WP BookWidgets插件的所有版本,包括0.9及以下版本。
WP BookWidgets是一款用于WordPress的书籍展示与管理插件,允许用户在网站中展示书籍信息。该插件提供了一系列短代码(shortcode)用于在文章和页面中嵌入书籍相关的内容,其中包括'bw_link'短代码,用于生成书籍链接。
该漏洞的核心问题在于插件的'bw_link'短代码在处理用户输入的属性时,未能进行充分的输入净化(input sanitization)和输出转义(output escaping)。这意味着攻击者可以通过精心构造的恶意属性值,将任意JavaScript代码注入到页面中。由于这些恶意脚本会被持久化存储在WordPress数据库中,每当普通用户访问包含该短代码的页面时,注入的恶意脚本就会自动执行。
根据漏洞描述,成功利用此漏洞需要攻击者至少拥有贡献者(contributor)级别的WordPress账户访问权限。虽然这降低了漏洞的严重性,但仍然是一个值得关注的安全问题,因为许多WordPress网站允许多名贡献者发布内容。
该漏洞的技术原理基于WordPress短代码机制的不安全实现。WP BookWidgets插件注册了'bw_link'短代码,当文章或页面中包含[bw_link]标签时,WordPress核心会调用插件的短代码处理函数来渲染对应的输出。
漏洞的根本原因在于短代码属性处理函数中缺少两个关键的安全措施:
1. **输入净化不足**:插件在接收用户通过短代码属性传入的参数时,没有使用WordPress提供的净化函数(如sanitize_text_field()、esc_url()、esc_attr()等)对输入进行清理。这意味着攻击者可以在属性值中嵌入恶意HTML标签和JavaScript代码。
2. **输出转义缺失**:在将处理后的属性值输出到HTML页面时,插件没有使用适当的转义函数(如esc_html()、esc_attr()、esc_url()等)对输出进行编码。这使得恶意脚本能够直接以可执行的形式出现在最终渲染的HTML中。
攻击利用方式如下:攻击者首先需要拥有一个贡献者级别的WordPress账户。然后,攻击者创建或编辑一篇文章/页面,在内容中插入类似以下的恶意短代码:
[bw_link url='" onmouseover="alert(document.cookie)" data-x="' target="_blank"]点击这里[/bw_link]
当该文章被发布后,恶意JavaScript代码会被存储在WordPress数据库中。每当任何用户(包括管理员)访问该页面时,浏览器会解析并执行注入的脚本。攻击者可以利用此漏洞窃取用户会话Cookie、进行钓鱼攻击、劫持用户账户,或者在管理员访问时提升权限执行更危险的操作。