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

本文详细描述了在Revive Adserver广告管理系统的横幅删除端点中发现的一个不安全的直接对象引用漏洞。该漏洞允许任意经理用户删除其他经理用户的横幅,并分析了漏洞原理、复现步骤及潜在影响。

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的凭据登录

    (图片:Manager A successfully authenticated and viewing dashboard)

  2. 导航到您的广告活动的横幅页面

    1
    
    http://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)

  3. 提取 CSRF 令牌

    • 打开浏览器开发者工具 -> 网络标签页
    • 查找任何操作链接(停用/删除)
    • 复制 token 参数值(32位十六进制字符串)
    • 示例:token=9fec0e8e46e9eb237d67d3da6e3e615b
  4. 识别受害者的横幅 ID

    • 横幅ID是连续的整数
    • 您可以通过枚举或其他方式获取它们
    • 对于此测试:受害者的横幅ID为2001
  5. 构造恶意删除URL

    1
    
    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粘贴到浏览器的地址栏中
    • 按回车键(在同一会话内)
    • 您将被重定向,并显示"横幅已被删除"的确认信息

    (图片: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-526702025年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

赏金

账户详情

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计