漏洞报告 #3411750 - 横幅模态框中显示的广告活动名称存在存储型XSS
描述
一个低权限的认证用户可以创建或编辑包含HTML/JavaScript代码的广告商/广告活动名称。这些值被存储在应用程序中,随后在管理员后台的“库存→横幅广告”选择器中渲染时,未对HTML进行正确的转义。当管理员打开此选择器时,存储的脚本会在管理员浏览器中执行,可能导致账户接管、未授权的管理员操作或敏感数据泄露。
由于任何认证的普通用户都可以存储攻击载荷,因此攻击向量是远程的,对于拥有有效账户的攻击者来说利用门槛极低。
复现步骤
攻击者注入了XSS脚本代码:
图片:163.45 KiB
执行结果:
图片:167.15 KiB
影响
远程认证攻击者(普通用户)可以植入在管理员浏览器中执行的JavaScript。 可能的后果(取决于环境和Cookie设置):
- 管理员会话窃取(如果Cookie可访问)。
- 通过管理员会话执行静默的管理操作(创建/修改/删除资源)。
- 泄露管理员可访问的敏感UI数据。
- 为进一步入侵基础设施或数据外泄创造条件。 由于攻击者只需一个普通账户即可持久化攻击载荷,因此该漏洞具有很高的可利用性,应被优先处理。
时间线
- 2025年11月5日,上午9:32 (UTC):安全研究员
vidang04向 Revive Adserver 提交了漏洞报告。 - 2025年11月5日,下午1:26 (UTC):项目方成员
mbeccati将状态更改为“需要更多信息”,表示未能复现问题,并提供了截图。 - 2025年11月5日,下午3:03 (UTC):
vidang04将状态改回“新建”,并提供了使用 Revive Adserver 6.0.1 版本的视频证明。 - 2025年11月5日,下午3:11 (UTC):
mbeccati再次将状态设为“需要更多信息”,指出刚刚发布了 6.0.2 版本,请求研究员在新版本上重新测试,并在必要时提供clients、campaigns和banners表的数据库转储。 - 2025年11月5日,下午3:51 (UTC):
vidang04确认在 6.0.2 版本上问题仍然存在,并提供了网页信息截图。 - 2025年11月5日,下午3:56 (UTC):项目方成员
erikgeurts再次请求提供指定的数据库表转储。 - 2025年11月5日,下午4:08 (UTC):
mbeccati进一步请求以SQL文件形式提供数据。 - 2025年11月5日,下午5:04 (UTC):在收到研究员提供的SQL数据后,
mbeccati将状态更改为“已分类”,确认能够复现该问题,并承诺将在几天内深入研究并提供一个补丁文件以供验证。 - 2025年11月6日,凌晨2:03 (UTC):
vidang04表示感谢。 - 2025年11月11日,下午1:07 (UTC):
mbeccati将报告状态关闭并标记为“已解决”。他解释了漏洞触发的关键条件:只有当广告活动属于不同的广告商时,攻击载荷才会被触发。更换广告商会触发动态加载,此时内容未经转义就被显示并执行。他同时提供了修复补丁文件h1-3411750.patch。 - 12天前:
mbeccati更新了CVE编号为 CVE-2025-55126。 - 12天前:
mbeccati请求并最终公开披露了此份报告。公开的安全公告链接为:https://www.revive-adserver.com/security/revive-sa-2025-004/
报告摘要
- 报告日期:2025年11月5日,上午9:32 UTC
- 报告者:vidang04
- 报告对象:Revive Adserver
- 报告ID:#3411750
- 状态:已解决
- 严重等级:中危 (6.5)
- 公开披露日期:2025年11月19日,下午12:56 UTC
- 漏洞类型:跨站脚本攻击 (XSS) - 存储型
- CVE ID:CVE-2025-55126
- 赏金:无