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 参数,同时使用我自己有效的 clientid 和 campaignid 来删除其他经理的横幅。
具体情况是:端点检查我是否有权限访问对应的客户和广告活动(代码第30-31行),但它从未验证我是否拥有试图删除的特定横幅的所有权(第32行缺少检查)。随后,代码循环遍历提供的横幅ID并进行删除,没有任何所有权验证(第40-48行)。
我是在对比类似的删除端点时发现这个问题的。campaign-delete.php 文件在循环内部正确地验证了所有权,但 banner-delete.php 没有。
复现步骤 前提条件
- 两个"经理"账户(经理A - 攻击者,经理B - 受害者)
- 每个经理拥有自己的客户、广告活动和横幅
- 运行 Revive Adserver 6.0.1
利用步骤
- 以经理A(攻击者)身份登录。
- 导航到
http://localhost:8080/www/admin/ - 使用经理A的凭据登录。
- 导航到
- 导航到您广告活动的横幅页面。
http://localhost:8080/www/admin/campaign-banners.php?clientid=100&campaignid=100(使用您自己的clientid和campaignid)
- 提取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键(在同一会话内)。
- 您将被重定向,并看到"横幅已被删除"的确认信息。
影响 此漏洞允许经理用户之间进行横向权限提升。攻击者可以:
- 破坏广告活动 - 删除竞争对手的横幅,扰乱其广告活动。
- 造成收入损失 - 受害者失去活跃的广告投放和潜在收入。
- 损害声誉 - 受影响的客户可能对平台失去信任。
- 违反数据完整性 - 未经授权的删除绕过了审计控制。
攻击特征
- 所需权限低:仅需要一个"经理"账户(无需管理员权限)。
- 易于利用:简单的参数操作,无需特殊工具。
- 隐蔽性强:在日志中看起来像是合法的删除操作。
- 可扩展性:可以自动化删除多个横幅。
- 跨上下文: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-52670。 2025年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
- 赏金:无
- 账户详情:无