任意用户密码重置(四):重置凭证未校验
字数 1210 2025-08-18 11:37:07

任意用户密码重置漏洞分析:重置凭证未校验

漏洞概述

任意用户密码重置漏洞是逻辑漏洞中最常见的一种,主要出现在密码找回功能中。本文重点分析"重置凭证未校验"这一类型的漏洞,即服务端未对用户提交的密码重置凭证(如验证码、密保答案)进行有效性校验,导致攻击者可以绕过正常验证流程重置任意用户密码。

漏洞原理

密码找回功能通常需要验证用户身份,常见方式有:

  1. 发送重置验证码到用户绑定的邮箱或手机
  2. 要求用户回答预设的密保问题

当服务端未对用户提交的重置凭证进行校验时,无论凭证是否正确,只要请求格式合法,系统都会允许密码重置操作。

漏洞案例与分析

案例一:未校验重置token

漏洞发现过程

  1. 攻击者使用自己的账号(yangyangwithgnu@yeah.net)发起密码找回请求
  2. 收到包含token的重置链接:http://www.omegatravel.net/users/retrievePasswordReset/key:FqvICT/userEmail:yangyangwithgnu@yeah.net
  3. 修改key值为任意值(如xxxxxx)后访问链接,仍能进入密码重置页面
  4. 构造其他用户的密码重置链接:http://www.omegatravel.net/users/retrievePasswordReset/key:xxxxxx/userEmail:travel24@omegatravel.net
  5. 成功重置目标用户密码并登录

漏洞本质:服务端未验证token与邮箱的匹配关系,仅检查请求格式

攻击扩展

  • 通过网站域名信息推测内部邮箱格式(如@omegauk.net)
  • 组合常见姓名与邮箱后缀生成用户字典
  • 从"联系我们"等页面收集内部邮箱

案例二:可枚举无密保用户

漏洞发现过程

  1. 在密码找回页面输入用户名并拦截请求
  2. 分析服务器响应:
    • 用户名存在且有密保:返回密保问题
    • 用户名存在但无密保:返回<td width="65%"></td>
    • 用户名不存在:返回错误提示
  3. 枚举常见用户名,筛选无密保的用户
  4. 对无密保用户,输入任意密保答案均可重置密码

漏洞本质:服务端允许无密保用户通过密保方式找回密码,且不验证答案的正确性

防御措施

  1. 严格校验重置凭证

    • 必须验证token与用户身份的匹配关系
    • 必须验证密保答案的正确性
  2. 处理无密保账户

    • 禁止无密保用户通过密保方式找回密码
    • 提供替代的身份验证方式
  3. 防止枚举攻击

    • 添加图片验证码
    • 限制单位时间内的请求频率
    • 对枚举行为进行检测和阻断
  4. 安全开发实践

    • 所有验证逻辑必须在服务端实现
    • 敏感操作需多重验证
    • 定期进行安全审计

总结

重置凭证未校验漏洞技术门槛低但危害大,攻击者可借此完全控制用户账户。开发人员必须对所有验证环节进行严格校验,不能仅依赖请求格式的正确性。安全团队应定期对密码找回功能进行专项测试,确保所有验证逻辑得到正确实施。

任意用户密码重置漏洞分析:重置凭证未校验 漏洞概述 任意用户密码重置漏洞是逻辑漏洞中最常见的一种,主要出现在密码找回功能中。本文重点分析"重置凭证未校验"这一类型的漏洞,即服务端未对用户提交的密码重置凭证(如验证码、密保答案)进行有效性校验,导致攻击者可以绕过正常验证流程重置任意用户密码。 漏洞原理 密码找回功能通常需要验证用户身份,常见方式有: 发送重置验证码到用户绑定的邮箱或手机 要求用户回答预设的密保问题 当服务端未对用户提交的重置凭证进行校验时,无论凭证是否正确,只要请求格式合法,系统都会允许密码重置操作。 漏洞案例与分析 案例一:未校验重置token 漏洞发现过程 : 攻击者使用自己的账号( yangyangwithgnu@yeah.net )发起密码找回请求 收到包含token的重置链接: http://www.omegatravel.net/users/retrievePasswordReset/key:FqvICT/userEmail:yangyangwithgnu@yeah.net 修改key值为任意值(如 xxxxxx )后访问链接,仍能进入密码重置页面 构造其他用户的密码重置链接: http://www.omegatravel.net/users/retrievePasswordReset/key:xxxxxx/userEmail:travel24@omegatravel.net 成功重置目标用户密码并登录 漏洞本质 :服务端未验证token与邮箱的匹配关系,仅检查请求格式 攻击扩展 : 通过网站域名信息推测内部邮箱格式(如 @omegauk.net ) 组合常见姓名与邮箱后缀生成用户字典 从"联系我们"等页面收集内部邮箱 案例二:可枚举无密保用户 漏洞发现过程 : 在密码找回页面输入用户名并拦截请求 分析服务器响应: 用户名存在且有密保:返回密保问题 用户名存在但无密保:返回 <td width="65%"></td> 用户名不存在:返回错误提示 枚举常见用户名,筛选无密保的用户 对无密保用户,输入任意密保答案均可重置密码 漏洞本质 :服务端允许无密保用户通过密保方式找回密码,且不验证答案的正确性 防御措施 严格校验重置凭证 : 必须验证token与用户身份的匹配关系 必须验证密保答案的正确性 处理无密保账户 : 禁止无密保用户通过密保方式找回密码 提供替代的身份验证方式 防止枚举攻击 : 添加图片验证码 限制单位时间内的请求频率 对枚举行为进行检测和阻断 安全开发实践 : 所有验证逻辑必须在服务端实现 敏感操作需多重验证 定期进行安全审计 总结 重置凭证未校验漏洞技术门槛低但危害大,攻击者可借此完全控制用户账户。开发人员必须对所有验证环节进行严格校验,不能仅依赖请求格式的正确性。安全团队应定期对密码找回功能进行专项测试,确保所有验证逻辑得到正确实施。