IDOR漏洞报告:Revive Adserver 横幅删除功能
报告摘要
cyberjoker 向 Revive Adserver 提交了一份报告,指出其系统存在一个IDOR(不安全的直接对象引用)漏洞。该漏洞位于横幅删除端点,允许任何拥有Manager权限的用户删除其他Manager账户的广告横幅,从而可能破坏竞争对手的广告活动。
漏洞描述
端点 /www/admin/banner-delete.php 存在IDOR漏洞。测试表明,攻击者可以通过操纵 bannerid 参数,同时使用自己有效的 clientid 和 campaignid,来删除其他管理员的横幅。
核心代码逻辑缺陷:
- 端点检查用户是否有权访问指定的客户端和广告活动(代码第30-31行)。
- 然而,它从未验证用户是否拥有其试图删除的特定横幅的所有权(第32行缺少检查)。
- 代码随后循环遍历提供的横幅ID并删除它们,期间没有任何所有权验证(第40-48行)。
此漏洞是在对比类似删除端点时发现的。campaign-delete.php 文件在循环内部正确验证了所有权,但 banner-delete.php 却没有。
复现步骤
前提条件:
- 两个Manager账户(攻击者Manager A,受害者Manager B)。
- 每个Manager拥有自己的客户、广告活动和横幅。
- 运行 Revive Adserver 6.0.1。
利用步骤:
-
以Manager A(攻击者)身份登录。
- 导航至
http://localhost:8080/www/admin/并使用Manager A凭据登录。 - 图片: Manager A成功登录并查看仪表板。
- 导航至
-
导航至您的广告活动的横幅页面。
- 访问类似
http://localhost:8080/www/admin/campaign-banners.php?clientid=100&campaignid=100的URL(使用您自己的clientid和campaignid)。 - 图片: Manager A查看其合法横幅 – 注意“停用”链接中的CSRF令牌。
- 访问类似
-
提取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=2001token: 您有效的CSRF令牌(来自步骤3)。clientid=100: 您的 客户端ID(通过授权检查)。campaignid=100: 您的 广告活动ID(通过授权检查)。bannerid=2001: 受害者的 横幅ID(无检查!)。
-
执行攻击。
- 将构造好的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
- 赏金:无