Revive Adserver存储型XSS漏洞分析
漏洞概述
报告ID: #3400506
漏洞类型: 存储型跨站脚本攻击(XSS)
受影响系统: Revive Adserver 6.0.1
CVE编号: CVE-2025-52668
严重程度: 高(8.7)
漏洞详情
受影响组件
- 产品: Revive Adserver
- 测试版本: 6.0.1
- 组件: 统计/转化报告
- 文件: www/admin/stats-conversions.php:356
- URL: http://[host]/www/admin/stats.php?entity=conversions&clientid=[id]
漏洞代码
|
|
问题分析
- 跟踪器名称直接输出,未使用
htmlspecialchars()转义 - 数据来自广告商控制的输入(跟踪器创建表单)
- 存储时没有输入验证来剥离HTML标签
- 管理员查看转化报告时在其浏览器上下文中执行有效载荷
复现步骤
前提条件
- 广告商账户(低权限)
- 管理员账户(用于测试影响)
攻击步骤
-
以广告商身份登录并创建恶意跟踪器:
- 导航到:Inventory → Advertisers → 点击广告商名称 → Trackers标签
- 点击"Add new tracker"
- 设置跟踪器名称为:
1<img src=x onerror="alert('XSS: ' + document.cookie)"> - 设置跟踪器类型为"Sale",状态为"Active"
- 点击"Save Changes"
-
创建转化记录:
1 2 3 4 5-- 将转化链接到恶意跟踪器 INSERT INTO rv_data_intermediate_ad_connection ( tracker_id, ad_id, inside_window, tracker_date_time, connection_date_time, connection_action, connection_status, updated ) VALUES (1, 1, 1, NOW(), NOW(), 1, 4, NOW()); -
以管理员身份查看统计:
- 访问:
http://[host]/www/admin/stats.php?entity=conversions&clientid=1 - 结果:JavaScript警报立即触发
- 访问:
技术分析
会话 riding vs 会话窃取
会话窃取(被HttpOnly阻止):
|
|
会话 riding(不被HttpOnly阻止):
|
|
攻击复杂性
攻击者可以自行生成转化,无需:
- 管理员配合
- 真实广告展示
- 第三方cookies
- 菜单黑客
使用curl命令即可完成攻击:
|
|
影响评估
数据泄露
- 读取转化收入数据
- 查看所有广告系列名称
- 访问跟踪器元数据
- 导出用户列表
管理员操作
通过会话riding可执行的操作:
|
|
CVSS评分分析
最终评分: 8.7(高)
评分依据:
- 攻击向量:网络
- 攻击复杂性:低
- 权限要求:低
- 用户交互:需要
- 范围:改变
- 机密性影响:高
- 完整性影响:高
- 可用性影响:无
修复方案
开发团队提供了补丁文件h1-3400506.patch,主要修复措施包括:
- 对输出内容进行适当的HTML转义
- 实施输入验证和过滤
- 修复相关统计页面中的类似问题
时间线
- 2025年10月26日: 漏洞报告提交
- 2025年10月27日: 团队确认漏洞,初始评分为2.6(低)
- 2025年10月28日: 经过技术讨论,评分更新为8.7(高)
- 2025年11月5日: 计划安全发布
- 2025年11月19日: 漏洞披露
该漏洞允许低权限广告商通过存储型XSS攻击完全控制管理员账户,展示了即使有HttpOnly保护,会话riding攻击仍然具有严重的安全影响。