揭露漏洞:Revive AdServer 反射型XSS漏洞分析与修复

本文详细记录了在Revive AdServer 6.0.1版本的account-preferences-plugin.php文件中发现的反射型跨站脚本漏洞。文章包含了漏洞的发现过程、技术原理、复现步骤、官方确认与修复方案,并提及了相关的CVE编号。

Revive Adserver | 报告 #3399191 - account-preferences-plugin.php 中的反射型XSS

报告由 lu3ky-13 提交

摘要

我发现 revive-adserver-6.0.1/www/admin/account-preferences-plugin.php 文件中存在一个反射型跨站脚本漏洞,漏洞点在于 group 查询参数。由于未对不可信输入进行适当的输出编码或上下文感知的转义处理,导致攻击者可以将JavaScript代码注入到生成的页面中。

受影响组件 revive-adserver-6.0.1/www/admin/account-preferences-plugin.php?group= 测试实例:████…

概念验证

自定义PoC URL (通过 xss.report 测试/报告): ██████████%27%22%3E%3Cscript%20src=//███████%3E%3C/script%3E

一个无需远程资源即可演示执行的替代(内联)PoC: ██████████%27%22%3E%3Cscript%3Ealert(9645)%3C/script%3E

在我测试中弹出提示框的“普通载荷”(非破坏性)示例: '"()%26%25<zzz><ScRiPt >alert(9645)</ScRiPt>

安全复现步骤

  1. 访问:████%27%22%3E%3Cscript%3Ealert(1)%3C/script%3E
  2. 观察注入的 <script>alert(1)</script> 是否被执行(弹出提示框)—— 确认反射型XSS。

影响

攻击者可以注入在受害者浏览器上下文中执行的脚本。这可用于典型的XSS滥用(UI伪装、钓鱼内容持久化、会话操纵)。注意:我只测试了非破坏性的PoC,并未尝试窃取敏感信息。

时间线与处理

  • 2025年10月25日 03:23 UTC:lu3ky-13 向 Revive Adserver 提交报告。
  • 2025年10月25日 07:03 UTC:Revive Adserver 团队成员 mbeccati 将状态更改为 已分类,并确认了反射型XSS漏洞的存在。
  • 2025年10月26日 11:18 UTC:mbeccati 发布评论,指出随附的 h1-3399191.patch 文件应能修复该漏洞。漏洞发生的原因是 "group" 参数未得到妥善清理。修复方案现在会从输入中丢弃意外字符,并验证其是否为有效输入(即该插件组确实有需要显示给用户的偏好设置)。
  • 2025年10月26日 11:22 UTC:mbeccati 将严重程度从 高 (7.3) 调整为 中 (4.3),以更贴合反射型XSS攻击的实际情况。
  • 2025年10月28日 11:02 UTC:mbeccati 将报告状态更改为 已解决 并关闭了报告。评论指出计划在接下来一周的周三(11月5日)进行安全更新,修复多个漏洞,将申请CVE-ID并准备详细的安全公告。
  • 2025年10月28日 11:57 UTC:lu3ky-13 提供了其署名信息。
  • 2025年10月31日 13:45 UTC:mbeccati 更新了CVE参考编号为 CVE-2025-48987
  • 2025年11月19日 09:32 UTC:报告被同意公开披露。

后续沟通

在报告披露约10天后,lu3ky-13 留言称收到通知,发现有人使用了报告中的载荷,并因其可能构成盲XSS而请求删除或编辑报告中的载荷。项目方回复无法编辑其摘要部分。最终,报告者自行删除了其摘要中的相关内容。

报告信息

  • 报告日期:2025年10月25日 03:23 UTC
  • 报告者:lu3ky-13
  • 报告ID:#3399191
  • 状态:已解决
  • 严重程度:中 (4.3)
  • 披露日期:2025年11月19日 09:32 UTC
  • 漏洞类型:反射型跨站脚本 (XSS)
  • CVE ID:CVE-2025-48987
  • 赏金:隐藏
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计