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

本文详细分析了Revive Adserver广告管理系统中一个严重的IDOR(不安全的直接对象引用)漏洞。该漏洞允许任意Manager用户删除其他Manager的广告横幅,涉及具体的漏洞端点、代码逻辑缺陷、复现步骤以及潜在的业务影响。

IDOR漏洞报告:Revive Adserver 横幅删除功能

报告摘要

cyberjokerRevive Adserver 提交了一份报告,指出其系统存在一个IDOR(不安全的直接对象引用)漏洞。该漏洞位于横幅删除端点,允许任何拥有Manager权限的用户删除其他Manager账户的广告横幅,从而可能破坏竞争对手的广告活动。

漏洞描述

端点 /www/admin/banner-delete.php 存在IDOR漏洞。测试表明,攻击者可以通过操纵 bannerid 参数,同时使用自己有效的 clientidcampaignid,来删除其他管理员的横幅。

核心代码逻辑缺陷:

  1. 端点检查用户是否有权访问指定的客户端和广告活动(代码第30-31行)。
  2. 然而,它从未验证用户是否拥有其试图删除的特定横幅的所有权(第32行缺少检查)。
  3. 代码随后循环遍历提供的横幅ID并删除它们,期间没有任何所有权验证(第40-48行)。

此漏洞是在对比类似删除端点时发现的。campaign-delete.php 文件在循环内部正确验证了所有权,但 banner-delete.php 却没有。

复现步骤

前提条件:

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

利用步骤:

  1. 以Manager A(攻击者)身份登录。

    • 导航至 http://localhost:8080/www/admin/ 并使用Manager A凭据登录。
    • 图片: Manager A成功登录并查看仪表板。
  2. 导航至您的广告活动的横幅页面。

    • 访问类似 http://localhost:8080/www/admin/campaign-banners.php?clientid=100&campaignid=100 的URL(使用您自己的clientid和campaignid)。
    • 图片: Manager A查看其合法横幅 – 注意“停用”链接中的CSRF令牌。
  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键(在同一会话中)。
    • 您将被重定向,并看到“横幅已被删除”的确认信息。
    • 图片: 关键信息: 绿色成功消息确认Manager B的横幅已被Manager A删除。

影响

此漏洞允许Manager之间进行水平权限提升。攻击者可以:

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

攻击特征:

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

时间线与处理

  • 2025年10月27日,17:29 UTC:cyberjoker 提交报告。
  • 2025年10月27日,18:31 UTC:Revive Adserver 工作人员 mbeccati 表示感谢并承诺调查。
  • 2025年10月27日,19:55 UTC:报告状态更改为“已分类”。
  • 2025年10月28日,08:12 UTC:mbeccati 提供了修复差异(diff F4938624)并请求验证。
  • 2025年10月28日,11:04 UTC:mbeccati 将报告状态更改为“已解决”。团队计划在下周三(11月5日)发布包含多个漏洞修复的安全版本,将申请CVE-ID并发布详细安全公告。由于部分漏洞风险较高,将推迟披露细节,以便用户有足够时间升级。
  • 2025年10月28日,13:34 UTC:cyberjoker 确认修复,并提供了用于署名的姓名“Vitaly Simonovich”。
  • 2025年11月4日,17:43 UTC:mbeccati 更新CVE参考为 CVE-2025-52670
  • 2025年11月9日,21:27 UTC:cyberjoker 询问CVE何时会出现在 cve.org 网站。
  • 2025年11月10日,07:58 UTC:另一位工作人员 erikgeurts 回应称CVE.org更新通常较慢,团队不会立即自行披露以给予用户充足的升级时间。
  • 约7天前:mbeccati 请求并随后披露了此报告。

报告详情

  • 报告ID:#3401612
  • 状态:已解决
  • 严重性:高(7.1)
  • 披露日期:2025年11月19日,09:35 UTC
  • 漏洞类型:不安全的直接对象引用(IDOR)
  • CVE ID:CVE-2025-52670
  • 赏金:无
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计