任意用户密码重置(一):重置凭证泄漏
字数 1919 2025-08-18 11:37:02
任意用户密码重置漏洞分析:重置凭证泄漏
漏洞概述
任意用户密码重置漏洞是Web应用中常见的逻辑漏洞,主要出现在密码找回功能中。本文重点分析因重置凭证泄漏导致的任意用户密码重置问题,通过两个实际案例详细说明漏洞原理、利用方法和防御措施。
案例一:验证码直接泄漏在HTTP应答中
漏洞描述
在邮件找回密码流程中,系统将作为重置凭证的验证码直接包含在HTTP响应中返回给客户端,攻击者可以通过抓包轻易获取验证码。
漏洞复现步骤
-
正常流程测试
- 使用攻击者账号(yangyangwithgnu@yeah.net)发起密码找回请求
- 点击"获取校验码"按钮
- 抓取HTTP响应包,发现包含
VFCode字段(验证码) - 登录邮箱查看实际收到的验证码,确认与响应包中的一致
-
普通用户密码重置
- 在密码找回页面输入目标邮箱
- 系统会立即校验邮箱是否注册(可通过枚举常见邮箱如qq邮箱发现有效用户)
- 以chenwei@qq.com为例,从响应包中获取验证码
- 使用验证码重置密码为PenTest1024
- 验证新密码可成功登录
-
管理员账号密码重置
- 从网站域名注册信息获取联系人邮箱(fishliu@xxxx.cn)
- 推测后台用户邮箱后缀为@xxxx.cn
- 构造后台用户邮箱字典进行枚举
- 发现大量后台用户后可同样方式重置密码
关键点
- 验证码直接包含在HTTP响应中
- 邮箱有效性可被枚举(无防护措施)
- 通过域名信息推测管理员邮箱模式
案例二:重置链接token泄漏至客户端
漏洞描述
在邮件找回密码流程中,带凭证的重置链接(token)泄漏至客户端,攻击者可通过抓包获取token并构造重置链接。
漏洞复现步骤
-
正常流程测试
- 输入攻击者账号(yangyangwithgnu)和邮箱(yangyangwithgnu@yeah.net)
- 拦截302重定向响应,发现可疑参数
isVerify和PassPhrase - 完成验证码验证后,收到带token的重置邮件
- 确认邮件中的token与之前抓包获取的一致
-
获取有效用户名
- 利用注册页面的用户名校验功能(输入用户名后立即返回是否已存在)
- 使用常见姓名字典枚举有效用户名(如chenchuan、chenanqi等)
- 保存为username.txt
-
构造邮箱字典
- 假设用户使用用户名注册qq邮箱
- 将username.txt转换为qq-email.txt(如yangyangwithgnu→yangyangwithgnu@qq.com)
-
枚举有效用户名/邮箱组合
- 使用Burp的pitchfork攻击模式
- 变量1: user_name参数,加载username.txt
- 变量2: email参数,加载qq-email.txt
- 通过302响应识别有效组合(如zhangfeng/zhangfeng@qq.com)
-
重置普通用户密码
- 使用chenchuan/chenchuan@qq.com发起密码找回
- 从响应包获取token:
isVerify=Y2hlbmNodWFufGNoZW5jaHVhbkBxcS5jb218MTE2MDIzNw==&PassPhrase=cbf0160662358808f3586868f041cbaa - 构造重置链接:
http://www.xxxx.com/user/forgotPwdEc.php?isVerify=Y2hlbmNodWFufGNoZW5jaHVhbkBxcS5jb218MTE2MDIzNw==&PassPhrase=cbf0160662358808f3586868f041cbaa - 访问链接设置新密码PenTest1024
- 验证新密码可成功登录
关键点
- 重置token泄漏在HTTP响应中
- 用户名可被枚举(无防护措施)
- 邮箱模式可推测(用户名+@qq.com)
- 使用Burp的pitchfork模式高效枚举
防御措施
-
凭证安全
- 密码找回凭证(验证码/token)不应下发至客户端
- 重置链接应使用一次性token并设置合理有效期
-
防枚举措施
- 对邮箱/用户名校验功能添加图片验证码
- 限制单位时间内的尝试次数
- 对所有验证请求一视同仁(避免通过响应差异暴露信息)
-
权限控制
- 重置密码前要求验证原始凭证(如注册手机/邮箱)
- 关键操作需多重验证
-
日志监控
- 记录所有密码重置操作
- 监控异常重置行为(如频繁尝试、跨地域操作等)
总结
任意用户密码重置漏洞危害严重,攻击者可借此接管任意用户账号。开发人员应特别注意密码找回功能的安全性设计,避免将敏感凭证泄漏至客户端,同时对可能被枚举的参数添加适当防护措施。安全测试人员在进行渗透测试时,应重点关注密码找回流程中的逻辑缺陷和敏感信息泄漏问题。