Revive Adserver | 报告 #3401612 - 横幅删除功能中的IDOR漏洞
时间线 ID认证 - 已成功完成ID验证检查的黑客 cyberjoker 向 Revive Adserver 提交了一份报告。 2025年10月27日,下午5:29 (UTC)
摘要
我在 Revive Adserver 的横幅删除端点中发现了一个IDOR漏洞,该漏洞允许任何经理用户删除属于其他经理的横幅。代码验证了对父级广告活动的访问权限,但没有检查用户是否拥有被删除的特定横幅。这意味着经理A可以通过删除经理B的横幅来破坏其广告活动。
描述
/www/admin/banner-delete.php 端点存在不安全的直接对象引用漏洞。在我测试时,通过操控 bannerid 参数,同时保持使用我自己有效的 clientid 和 campaignid,我可以删除其他经理的横幅。
过程如下:该端点检查我是否对客户和广告活动有访问权限(第30-31行),但从未验证我是否拥有我试图删除的特定横幅(第32行缺少检查)。然后代码循环遍历提供的横幅ID并删除它们,没有任何所有权验证(第40-48行)。
我在比较类似的删除端点时发现了这个问题。campaign-delete.php 文件在循环内正确验证了所有权,但 banner-delete.php 没有。
复现步骤
前提条件
- 两个经理账户(经理A - 攻击者,经理B - 受害者)
- 每个经理都有自己的客户、广告活动和横幅
- 运行 Revive Adserver 6.0.1
利用步骤
-
以经理A身份登录
- 导航至
http://localhost:8080/www/admin/ - 使用经理A的凭据登录
(图片:Manager A successfully authenticated and viewing dashboard)
- 导航至
-
导航到您的广告活动的横幅页面
1http://localhost:8080/www/admin/campaign-banners.php?clientid=100&campaignid=100(使用您自己的 clientid 和 campaignid)
(图片:Manager A viewing their legitimate banner - note the CSRF token in the Deactivate link)
-
提取 CSRF 令牌
- 打开浏览器开发者工具 -> 网络标签页
- 查找任何操作链接(停用/删除)
- 复制
token参数值(32位十六进制字符串) - 示例:
token=9fec0e8e46e9eb237d67d3da6e3e615b
-
识别受害者的横幅 ID
- 横幅ID是连续的整数
- 您可以通过枚举或其他方式获取它们
- 对于此测试:受害者的横幅ID为2001
-
构造恶意删除URL
1http://localhost:8080/www/admin/banner-delete.php?token=<YOUR_TOKEN>&clientid=100&campaignid=100&bannerid=2001token: 您有效的CSRF令牌(来自步骤3)clientid=100: 您的客户ID(通过授权检查)campaignid=100: 您的广告活动ID(通过授权检查)bannerid=2001: 受害者的横幅ID(不检查!)
-
执行攻击
- 将构造的URL粘贴到浏览器的地址栏中
- 按回车键(在同一会话内)
- 您将被重定向,并显示"横幅已被删除"的确认信息
(图片:CRITICAL: Green success message confirms Manager B’s banner was deleted by Manager A)
影响
此漏洞允许经理之间的横向权限提升。攻击者可以做到:
- 活动破坏 - 删除竞争对手的横幅以干扰其广告活动
- 收入损失 - 受害者失去活跃广告和潜在收入
- 声誉损害 - 受影响的客户可能对平台失去信任
- 数据完整性破坏 - 未经授权的删除绕过了审计控制
攻击特征
- 所需权限低:只需要经理账户(不需要管理员)
- 易于利用:简单的参数操作,无需特殊工具
- 隐蔽性强:在日志中看起来像合法的删除操作
- 可扩展性:可以自动化删除多个横幅
- 跨上下文:X公司的经理可以攻击Y公司的经理
附件 3个附件: F4938082: 02_manager_a_dashboard.png F4938090: 04_manager_a_legitimate_banner.png F4938094: 05_IDOR_SUCCESS_banner_deleted.png
mbeccati (Revive Adserver 工作人员) 发表了一条评论。 2025年10月27日,下午6:31 (UTC) 感谢您的报告,我们会进行调查。
mbeccati (Revive Adserver 工作人员) 将状态更改为 已分类。 2025年10月27日,下午7:55 (UTC)
mbeccati (Revive Adserver 工作人员) 发表了一条评论。 2025年10月28日,上午8:12 (UTC) 差异文件 F4938624 应该可以修复此问题。请您验证一下好吗?
mbeccati (Revive Adserver 工作人员) 关闭了报告并将状态更改为 已解决。 2025年10月28日,上午11:04 (UTC) 我们目前计划在下周三(11月5日)进行一次安全版本发布,修复多个漏洞。 我们将申请CVE-ID并准备详细的安全公告。如果您尚未告知,请告诉我们您希望署名的名称。 然而,由于某些漏洞的风险级别较高,我们将在公布细节之前等待一段时间,以便让尽可能多的用户在漏洞利用程序出现之前升级。我希望您能理解并同意所提议的计划。
cyberjoker (ID认证) 发表了一条评论。 2025年10月28日,下午1:34 (UTC) 你好 @mbeccati, 感谢您的快速响应和修复! 关于署名,我的名字是 “Vitaly Simonovich”。 我理解现在披露漏洞的问题,并尊重您的要求。
mbeccati (Revive Adserver 工作人员) 将CVE引用更新为 CVE-2025-52670。 2025年11月4日,下午5:43 (UTC)
cyberjoker (ID认证) 发表了一条评论。 2025年11月9日,下午9:27 (UTC) 你好 @mbeccati, CVE什么时候会出现在 https://www.cve.org/ 上?
erikgeurts (Revive Adserver 工作人员) 发表了一条评论。 2025年11月10日,上午7:58 (UTC) 我们无法控制他们在网站上更新此信息的时间和速度。他们在某些事情上的处理速度是出了名的慢。为了给用户足够的机会更新到最新版本的Revive Adserver软件,我们自己在一段时间内不会披露此漏洞。没有必要继续追问我们或提醒我们,我们不会忘记这些待处理的工作。
mbeccati (Revive Adserver 工作人员) 请求披露此报告。 2025年11月19日,上午9:34 (UTC)
mbeccati (Revive Adserver 工作人员) 披露了此报告。 2025年11月19日,上午9:35 (UTC)
报告时间 2025年10月27日,下午5:29 (UTC)
报告者 cyberjoker
报告给 Revive Adserver
参与者 报告ID #3401612
状态 已解决
严重性 高 (7.1)
披露时间 2025年11月19日,上午9:35 (UTC)
弱点 不安全的直接对象引用
CVE ID CVE-2025-52670
赏金 无
账户详情 无