IDOR漏洞:Revive Adserver横幅删除功能中的权限绕过
摘要
本报告详细描述并复现了在Revive Adserver(6.0.1版本)中发现的一个不安全直接对象引用(IDOR)漏洞。该漏洞位于/www/admin/banner-delete.php端点,允许任意Manager账户删除属于其他Manager的广告横幅。漏洞的根源在于代码验证了用户对父级客户(client)和广告活动(campaign)的访问权限,但未检查用户是否拥有对特定横幅(banner)的所有权。该漏洞已被分配CVE编号:CVE-2025-52670。
漏洞描述
/www/admin/banner-delete.php 端点存在IDOR漏洞。通过操纵 bannerid 参数,同时使用攻击者自身有效的 clientid 和 campaignid,攻击者可以删除另一位管理用户的横幅。
漏洞逻辑如下:
- 端点会检查用户是否拥有对指定
clientid和campaignid的访问权限(代码第30-31行)。 - 然而,代码从未验证尝试删除的特定横幅(由
bannerid参数指定)是否属于当前用户(缺失第32行的检查)。 - 随后,代码循环遍历提供的横幅ID并将其删除,期间没有任何所有权验证(第40-48行)。
此漏洞是在与类似的删除端点(如 campaign-delete.php,其在循环内部正确验证了所有权)进行比较时发现的。
复现步骤
前提条件
- 两个Manager账户(攻击者:Manager A,受害者:Manager B)。
- 每位Manager都有自己的客户、广告活动和横幅。
- 运行Revive Adserver 6.0.1。
攻击步骤
-
登录Manager A(攻击者)
- 访问
http://localhost:8080/www/admin/,使用Manager A的凭证登录。
- 访问
-
导航至您的广告活动横幅页面
- 访问URL:
http://localhost:8080/www/admin/campaign-banners.php?clientid=100&campaignid=100(使用您自己的clientid和campaignid)。
- 访问URL:
-
提取CSRF令牌
- 打开浏览器开发者工具 -> 网络标签页。
- 查找任意操作链接(如“停用/删除”)。
- 复制
token参数的值(32位十六进制字符串),例如:token=9fec0e8e46e9eb237d67d3da6e3e615b。
-
识别受害者的横幅ID
- 横幅ID是连续的整数。
- 可以通过枚举或其他方式获取。在此测试中,受害者的横幅ID为
2001。
-
构造恶意删除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(无检查!)。
- 格式:
-
执行攻击
- 将构造好的URL粘贴到浏览器的地址栏中。
- 按Enter键(在同一会话内)。
- 您将被重定向并看到“横幅已被删除”的确认信息。
影响
此漏洞允许Manager之间进行水平权限提升。攻击者可以实现以下破坏:
- 广告活动破坏:删除竞争对手的横幅以干扰其广告活动。
- 收入损失:受害者失去活跃广告和潜在收入。
- 声誉损害:受影响的客户可能对平台失去信任。
- 数据完整性破坏:未经授权的删除绕过审计控制。
攻击特征
- 所需权限低:仅需Manager账户(非Admin)。
- 易于利用:简单的参数操纵,无需特殊工具。
- 隐蔽性强:在日志中看起来像合法删除。
- 可扩展性:可自动化以删除多个横幅。
- 跨上下文:Agency X的Manager可以攻击Agency Y的Manager。
时间线与处理
- 2025-10-27 17:29 UTC:漏洞报告者
cyberjoker向Revive Adserver提交报告。 - 2025-10-27 18:31 UTC:Revive Adserver 工作人员
mbeccati确认收到报告。 - 2025-10-27 19:55 UTC:报告状态变更为“已分类”。
- 2025-10-28 08:12 UTC:工作人员提供了修复补丁(diff F4938624),并请求报告者验证。
- 2025-10-28 11:04 UTC:报告状态变为“已解决”。开发团队计划于2025年11月5日(周三)发布安全版本,修复包括此漏洞在内的多个安全问题。他们申请了CVE-ID,并计划在用户有充足时间升级前延迟披露细节。
- 2025-10-28 13:34 UTC:报告者
cyberjoker确认修复有效,并提供了其姓名“Vitaly Simonovich”用于致谢。 - 2025-11-04 17:43 UTC:CVE引用更新为 CVE-2025-52670。
- 2025-11-19 09:35 UTC:报告细节被公开披露。
严重性等级:高 (CVSS 7.1) 弱点:不安全直接对象引用 (IDOR) 赏金:无