
我在转化统计页面发现了一个存储型跨站脚本(XSS)漏洞。广告商可以通过跟踪器名称注入恶意JavaScript,当管理员查看转化报告时(www/admin/stats-conversions.php:356),该脚本会执行。我利用此漏洞成功窃取了管理员会话cookie。这是一个权限提升问题:低权限的广告商账户可以危害高权限的管理员账户。
// www/admin/stats-conversions.php:356
echo "<td align='$phpAds_TextAlignLeft' style='padding: 0 4px'>{$conversion['trackername']}</td>
<td align='$phpAds_TextAlignLeft' style='padding: 0 4px'>{$conversion['campaignid']}</td>
<td align='$phpAds_TextAlignLeft' style='padding: 0 4px'>{$conversion['campaignname']}</td>";htmlspecialchars() 进行转义其他发现:
在调查此问题时,我注意到:
campaignid 和 campaignname 的 htmlspecialchars() 转义stats-*.php 文件可能存在类似问题——我尚未全部审计测试范围:
我在一个隔离的Docker环境中测试了此漏洞,使用的是我自己创建的账户。我没有:
菜单配置说明:
重要提示:在全新的Revive Adserver安装中,stats-conversions.php 页面并未包含在默认菜单系统中。在测试期间,我不得不通过修改 lib/OA/Admin/Menu/config.php 来添加菜单项以启用它:
$oMenu->addTo("2.1", new OA_Admin_Menu_Section("stats-conversions",
'Conversions', "stats-conversions.php?clientid={clientid}",
false, "statistics/conversions"));这很可能是一个配置问题,而非安全控制措施,因为:
OA_Permission::enforceAccount) 允许广告商/经理访问项目维护者回复 (2025-10-27):
感谢详细的报告。有几个错误,但总体来说漏洞是存在的。
stats.php?entity=conversions&clientid=1。报告者进一步反驳 (2025-10-27):
针对HttpOnly问题,报告者指出,虽然无法直接窃取cookie(document.cookie),但攻击依然有效:
fetch() 配合 credentials: 'include' 发起请求,浏览器会自动发送HttpOnly cookie,从而实现以管理员权限执行操作(如创建管理员账户、修改广告活动)。CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N 得分为8.7(高),最低也应达到6.0(中)。维护者更新 (2025-10-27 至 2025-10-28):
h1-3400506.patch 以修复漏洞。原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。