Revive Adserver 横幅删除功能中的IDOR漏洞剖析

本文详细描述了在Revive Adserver广告管理系统中发现的一处IDOR(不安全的直接对象引用)漏洞。该漏洞允许一个管理员账户删除其他管理员账户创建的广告横幅,存在横向权限提升风险。报告包含漏洞描述、复现步骤、影响分析和厂商修复过程。

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 参数,同时使用我自己有效的 clientidcampaignid 来删除其他经理的横幅。 具体情况是:端点检查我是否有权限访问对应的客户和广告活动(代码第30-31行),但它从未验证我是否拥有试图删除的特定横幅的所有权(第32行缺少检查)。随后,代码循环遍历提供的横幅ID并进行删除,没有任何所有权验证(第40-48行)。 我是在对比类似的删除端点时发现这个问题的。campaign-delete.php 文件在循环内部正确地验证了所有权,但 banner-delete.php 没有。

复现步骤 前提条件

  • 两个"经理"账户(经理A - 攻击者,经理B - 受害者)
  • 每个经理拥有自己的客户、广告活动和横幅
  • 运行 Revive Adserver 6.0.1

利用步骤

  1. 以经理A(攻击者)身份登录。
    • 导航到 http://localhost:8080/www/admin/
    • 使用经理A的凭据登录。
  2. 导航到您广告活动的横幅页面。
    • http://localhost:8080/www/admin/campaign-banners.php?clientid=100&campaignid=100 (使用您自己的clientid和campaignid)
  3. 提取CSRF令牌。
    • 打开浏览器开发者工具 → 网络选项卡。
    • 查找任何操作链接(停用/删除)。
    • 复制 token 参数值(32位十六进制字符串)。
    • 示例:token=9fec0e8e46e9eb237d67d3da6e3e615b
  4. 识别受害者的横幅ID。
    • 横幅ID是连续的整数。
    • 您可以通过枚举或其他方式获取它们。
    • 在本测试中:受害者的横幅ID是2001。
  5. 构造恶意的删除URL。
    • http://localhost:8080/www/admin/banner-delete.php?token=<YOUR_TOKEN>&clientid=100&campaignid=100&bannerid=2001
    • token: 您的有效CSRF令牌(来自步骤3)
    • clientid=100: 您的客户ID(通过授权检查)
    • campaignid=100: 您的广告活动ID(通过授权检查)
    • bannerid=2001: 受害者的横幅ID(没有检查!)
  6. 执行攻击。
    • 将构造好的URL粘贴到浏览器的地址栏中。
    • 按Enter键(在同一会话内)。
    • 您将被重定向,并看到"横幅已被删除"的确认信息。

影响 此漏洞允许经理用户之间进行横向权限提升。攻击者可以:

  • 破坏广告活动 - 删除竞争对手的横幅,扰乱其广告活动。
  • 造成收入损失 - 受害者失去活跃的广告投放和潜在收入。
  • 损害声誉 - 受影响的客户可能对平台失去信任。
  • 违反数据完整性 - 未经授权的删除绕过了审计控制。

攻击特征

  • 所需权限低:仅需要一个"经理"账户(无需管理员权限)。
  • 易于利用:简单的参数操作,无需特殊工具。
  • 隐蔽性强:在日志中看起来像是合法的删除操作。
  • 可扩展性:可以自动化删除多个横幅。
  • 跨上下文:X机构的经理可以攻击Y机构的经理。

附件 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并准备详细的安全公告。如果您还没有告知,请让我们知道您希望署名的名称。 但是,由于某些漏洞的风险级别较高,我们将在披露详细信息之前等待一段时间,以便让尽可能多的用户在漏洞利用代码泛滥之前进行升级。希望您能理解并同意提议的计划。

ID已验证 成功完成ID验证检查的黑客。 cyberjoker 发表评论。 2025年10月28日,下午1:34 (UTC) 你好 @mbeccati, 感谢您的快速响应和修复! 关于署名,我的名字是 “Vitaly Simonovich”。 我理解现在披露此漏洞的问题,并尊重您的要求。

mbeccati (Revive Adserver 员工) 将CVE引用更新为 CVE-2025-526702025年11月4日,下午5:43 (UTC)

ID已验证 成功完成ID验证检查的黑客。 cyberjoker 发表评论。 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 员工) 请求披露此报告。 9天前

mbeccati (Revive Adserver 员工) 披露了此报告。 9天前

报告详情

  • 报告于:2025年10月27日,下午5:29 (UTC)
  • 报告者:cyberjoker
  • 报告对象:Revive Adserver
  • 参与者
  • 报告ID:#3401612
  • 状态:已解决
  • 严重性:高 (7.1)
  • 披露于:2025年11月19日,上午9:35 (UTC)
  • 弱点:不安全的直接对象引用
  • CVE ID:CVE-2025-52670
  • 赏金:无
  • 账户详情:无
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计