挖洞经验 | Mail.ru子域名网站的密码重置型账户劫持漏洞
字数 1221 2025-08-15 21:31:42
Mail.ru子域名网站密码重置型账户劫持漏洞分析报告
漏洞概述
本报告详细分析了Mail.ru旗下子域名网站cups.mail.ru存在的一个密码重置型账户劫持漏洞。该漏洞允许攻击者在不知道当前密码的情况下,通过修改密码重置请求参数来接管任意用户账户。
漏洞发现背景
- 发现时间:2020年4月
- 发现方式:通过Hackerone众测项目
- 漏洞奖励:$1500
正常密码重置流程
-
初始请求:
- 用户访问密码重置链接:
https://cups.mail.ru/faq/restore-password/restore?step=1 - 输入绑定邮箱并提交
- 用户访问密码重置链接:
-
OTP验证:
- 系统向用户邮箱发送一次性OTP密码
- 页面跳转至OTP输入页面:
https://cups.mail.ru/faq/restore-password/restore?step=3 - 用户输入有效OTP密码
-
密码重置:
- 跳转至密码重置页面:
https://cups.mail.ru/faq/restore-password/restore?step=4 - 正常请求包含以下JSON数据:
{ "password": "password", "email": "user@gmail.com", "code": "onetimepassword" }
- 跳转至密码重置页面:
-
完成重置:
- 成功重置后跳转至:
https://cups.mail.ru/faq/restore-password/restore?step=5
- 成功重置后跳转至:
漏洞利用方法
-
直接访问重置端点:
- 攻击者直接访问最终重置页面:
https://cups.mail.ru/faq/restore-password/restore?step=4
- 攻击者直接访问最终重置页面:
-
修改请求参数:
- 将原始请求修改为:
{ "password": "reset", "email": "victim@mail.ru" } - 关键点:移除了
code字段(OTP验证),直接指定受害者邮箱
- 将原始请求修改为:
-
执行重置:
- 转发修改后的请求
- 系统返回重置成功页面:
https://cups.mail.ru/faq/restore-password/restore?step=5
-
账户接管:
- 在成功页面点击"to come in"按钮
- 直接进入受害者账户,无需任何额外验证
漏洞根本原因
-
缺乏权限验证:
- 密码重置功能未验证请求者是否已完成前序验证步骤
- 允许直接访问最终重置端点
-
不安全的实现逻辑:
- 后端仅检查请求中的邮箱参数,未验证OTP代码
- 重置成功后自动建立会话,无需密码验证
-
UI设计缺陷:
- 成功页面提供直接登录功能,未进行二次确认
修复建议
-
加强流程验证:
- 确保密码重置必须完成所有前序步骤
- 在服务器端维护重置流程状态
-
增加安全措施:
- 强制验证OTP代码
- 对重置请求添加CSRF保护
- 实现速率限制防止暴力破解
-
修改UI流程:
- 移除成功页面的自动登录功能
- 要求用户手动输入新密码登录
漏洞影响
- 攻击者可完全接管任意用户账户
- 无需任何用户交互(如点击链接)
- 仅需知道目标邮箱地址
总结
该漏洞展示了密码重置功能实现中常见的逻辑缺陷,强调了在关键账户操作中实施多因素验证的重要性。开发人员应确保安全流程的完整性,避免因跳过验证步骤而导致严重的安全问题。