CVE-2025-11830CVE-2025-11830是WordPress的WP Restaurant Listings插件中存在的一个存储型跨站脚本(Stored XSS)漏洞。该漏洞由Wordfence安全团队的安全研究员发现并报告,披露日期为2025年10月22日。CVSS 3.1评分为6.4分,属于中危级别漏洞。
WP Restaurant Listings是一款用于在WordPress网站上管理和展示餐厅信息的插件,允许用户通过简码(shortcode)将餐厅列表嵌入到页面和文章中。该插件提供restaurant_summary简码,用于在页面中展示餐厅的摘要信息。
漏洞存在于restaurant_summary简码的'align'参数中。由于插件开发者未对该参数进行充分的输入过滤(sanitization)和输出转义(escaping),攻击者可以在该参数中注入恶意的JavaScript代码。这些恶意代码会被存储在WordPress数据库中,每当有用户访问包含该简码的页面时,恶意脚本就会在受害者浏览器中执行。
由于该漏洞需要贡献者(contributor)级别及以上的认证权限才能利用,因此普通匿名用户无法直接利用此漏洞。然而,在多作者博客、允许用户投稿的网站或存在权限管理不当的WordPress站点中,该漏洞仍可能造成严重的安全风险,包括管理员账户被盗用、网站被植入恶意内容、会话劫持等。
该漏洞的核心问题在于restaurant_summary短代码处理'align'参数时缺乏安全防护。具体技术细节如下:
1. **简码参数处理缺陷**:WP Restaurant Listings插件通过WordPress的add_shortcode()函数注册了restaurant_summary简码。当用户在文章或页面中插入类似[restaurant_summary align="xxx"]的简码时,WordPress会调用插件的回调函数来处理这些参数。
2. **缺少输入过滤**:在回调函数处理'align'参数时,插件未使用WordPress提供的sanitize_text_field()、esc_attr()、wp_kses()等安全函数对用户输入进行过滤和清理。攻击者可以直接传入包含HTML标签和JavaScript代码的字符串。
3. **缺少输出转义**:当插件将'align'参数的值输出到HTML页面时,未使用esc_html()、esc_attr()等函数进行HTML实体编码,导致恶意脚本代码以原始形式被浏览器解析执行。
4. **存储型XSS利用流程**:
- 攻击者使用贡献者级别账户登录WordPress后台
- 创建新文章或页面,在内容中插入带有恶意'align'参数的restaurant_summary简码
- 恶意代码被保存到WordPress的wp_posts数据库表中
- 当任何用户(包括管理员)访问该文章/页面时,恶意JavaScript在浏览器上下文中执行
5. **影响范围**:受影响的代码位于includes/class-wp-restaurant-listings-shortcodes.php文件的第511行附近,对应restaurant_summary简码的处理逻辑。
该漏洞的攻击向量为网络(AV:N),攻击复杂度低(AC:L),需要低权限认证(PR:L),无需用户交互(UI:N),作用域发生变化(S:C),对机密性和完整性有低影响,对可用性无影响。