授权绕过漏洞允许修改其他用户的电子邮件地址
报告ID: #3398283 提交者: yoyomiski 提交日期: 2025年10月24日 下午3:14 (UTC) 目标: Revive Adserver 版本: Revive Adserver 6.0.0
摘要
在“更改电子邮件”用户界面中,修改邮箱需要输入当前密码。然而,管理员面板的端点 /admin/agency-user.php 接受一个POST请求来更新用户(包括管理员)的电子邮件,且不要求提供账户密码。应用程序在更新电子邮件地址前没有要求重新认证。
复现步骤
- 登录系统。
- 进入 Preferences(首选项) → Change E-mail(更改电子邮件),观察正常情况下更改电子邮件需要输入当前密码。
- 导航至 Inventory(库存) → User Access(用户访问),选择管理员用户,点击“保存更改”按钮,同时拦截该请求。
- 修改并发送以下请求:
1submit=1&login=admin&token=ba6ff2f70a69a509d5bcc84cb2225517&userid=1&email_address=another-mail@example.com&agencyid=1 - 观察发现,管理员用户的电子邮件在无需密码确认的情况下被成功更新。
影响
一个已认证的攻击者(能够访问“用户访问”页面)可以在未经授权的情况下更改管理员的电子邮件地址。这可能导致账户被接管或访问控制完整性丧失。
概念验证视频: (已编辑)
漏洞利用链分析
- 攻击者可以利用此漏洞,在无需提供当前密码的情况下,将管理员的电子邮件地址更改为攻击者控制的地址。
- 随后,攻击者可以使用“忘记密码”功能。
- 密码重置链接将被发送到攻击者控制的邮箱,从而使攻击者能够完全控制管理员账户。
时间线与处理过程
- 2025-10-24 15:47 (UTC): Revive Adserver 工作人员
mbeccati将报告状态变更为 已分类。确认了导致问题的代码路径,并计划在下周提供修复补丁。初步评估为低风险漏洞,因为需要物理访问或窃取的会话ID,因此不会单独发布安全版本。修复将安排在下一个常规错误修复版本中。 - 2025-10-26 15:45 (UTC):
mbeccati附上了修复该漏洞的补丁文件h1-3398283.patch。确认任何拥有提升权限(管理员或具有“允许此用户管理此账户的用户”权限)的登录用户,都可以使用其相应的/admin/*-user.php脚本来更改任何现有用户的电子邮件地址,并通过“忘记密码”功能接管其账户。 - 2025-10-26 15:55 (UTC):
mbeccati将漏洞严重性等级从 低 (2.7) 提升至 高 (7.2)。 - 2025-10-28 11:03 (UTC):
mbeccati将报告状态标记为 已解决。计划于11月5日(周三)发布安全版本,修复包括此漏洞在内的多个问题。将申请CVE-ID并发布详细的安全公告。出于风险考虑,将在漏洞细节披露前预留一段时间供用户升级。 - 2025-10-29 09:21 (UTC): 报告标题从《Missing re-authentication allows changing admin email without password — Revive Adserver 6.0.0》更新为《Authorization bypass allows changing email address of other users》。
- 2025-10-29 13:34 (UTC): 漏洞严重性等级更新为 高 (8.8),原因是攻击不需要管理员权限。
- 2025-10-29 13:39 (UTC): CVE参考编号更新为 CVE-2025-48986。
- 2025-11-12 09:24 (UTC): 报告者
yoyomiski提供了进一步的更新,指出即使创建的账户仅有“允许此用户管理此账户的用户”权限(仍无法直接管理管理员账户),但“保存更改”按钮依然可用,并且可以利用该按钮更改管理员的邮箱,从而完全接管管理员账户。这进一步增加了该漏洞的影响。 - 约9天前:
mbeccati同意披露此报告,报告被完全公开。
报告详情
- 状态: 已解决
- 严重性: 高 (8.8)
- 披露日期: 2025年11月19日 上午9:32 (UTC)
- 弱点类型: 不正确的访问控制(通用)
- CVE ID: CVE-2025-48986
- 致谢: Dao Hoang Anh (yoyomiski)