任意用户密码重置(一):重置凭证泄漏
字数 1919 2025-08-18 11:37:02

任意用户密码重置漏洞分析:重置凭证泄漏

漏洞概述

任意用户密码重置漏洞是Web应用中常见的逻辑漏洞,主要出现在密码找回功能中。本文重点分析因重置凭证泄漏导致的任意用户密码重置问题,通过两个实际案例详细说明漏洞原理、利用方法和防御措施。

案例一:验证码直接泄漏在HTTP应答中

漏洞描述

在邮件找回密码流程中,系统将作为重置凭证的验证码直接包含在HTTP响应中返回给客户端,攻击者可以通过抓包轻易获取验证码。

漏洞复现步骤

  1. 正常流程测试

    • 使用攻击者账号(yangyangwithgnu@yeah.net)发起密码找回请求
    • 点击"获取校验码"按钮
    • 抓取HTTP响应包,发现包含VFCode字段(验证码)
    • 登录邮箱查看实际收到的验证码,确认与响应包中的一致
  2. 普通用户密码重置

    • 在密码找回页面输入目标邮箱
    • 系统会立即校验邮箱是否注册(可通过枚举常见邮箱如qq邮箱发现有效用户)
    • 以chenwei@qq.com为例,从响应包中获取验证码
    • 使用验证码重置密码为PenTest1024
    • 验证新密码可成功登录
  3. 管理员账号密码重置

    • 从网站域名注册信息获取联系人邮箱(fishliu@xxxx.cn)
    • 推测后台用户邮箱后缀为@xxxx.cn
    • 构造后台用户邮箱字典进行枚举
    • 发现大量后台用户后可同样方式重置密码

关键点

  • 验证码直接包含在HTTP响应中
  • 邮箱有效性可被枚举(无防护措施)
  • 通过域名信息推测管理员邮箱模式

案例二:重置链接token泄漏至客户端

漏洞描述

在邮件找回密码流程中,带凭证的重置链接(token)泄漏至客户端,攻击者可通过抓包获取token并构造重置链接。

漏洞复现步骤

  1. 正常流程测试

    • 输入攻击者账号(yangyangwithgnu)和邮箱(yangyangwithgnu@yeah.net)
    • 拦截302重定向响应,发现可疑参数isVerifyPassPhrase
    • 完成验证码验证后,收到带token的重置邮件
    • 确认邮件中的token与之前抓包获取的一致
  2. 获取有效用户名

    • 利用注册页面的用户名校验功能(输入用户名后立即返回是否已存在)
    • 使用常见姓名字典枚举有效用户名(如chenchuan、chenanqi等)
    • 保存为username.txt
  3. 构造邮箱字典

    • 假设用户使用用户名注册qq邮箱
    • 将username.txt转换为qq-email.txt(如yangyangwithgnu→yangyangwithgnu@qq.com)
  4. 枚举有效用户名/邮箱组合

    • 使用Burp的pitchfork攻击模式
    • 变量1: user_name参数,加载username.txt
    • 变量2: email参数,加载qq-email.txt
    • 通过302响应识别有效组合(如zhangfeng/zhangfeng@qq.com)
  5. 重置普通用户密码

    • 使用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模式高效枚举

防御措施

  1. 凭证安全

    • 密码找回凭证(验证码/token)不应下发至客户端
    • 重置链接应使用一次性token并设置合理有效期
  2. 防枚举措施

    • 对邮箱/用户名校验功能添加图片验证码
    • 限制单位时间内的尝试次数
    • 对所有验证请求一视同仁(避免通过响应差异暴露信息)
  3. 权限控制

    • 重置密码前要求验证原始凭证(如注册手机/邮箱)
    • 关键操作需多重验证
  4. 日志监控

    • 记录所有密码重置操作
    • 监控异常重置行为(如频繁尝试、跨地域操作等)

总结

任意用户密码重置漏洞危害严重,攻击者可借此接管任意用户账号。开发人员应特别注意密码找回功能的安全性设计,避免将敏感凭证泄漏至客户端,同时对可能被枚举的参数添加适当防护措施。安全测试人员在进行渗透测试时,应重点关注密码找回流程中的逻辑缺陷和敏感信息泄漏问题。

任意用户密码重置漏洞分析:重置凭证泄漏 漏洞概述 任意用户密码重置漏洞是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并设置合理有效期 防枚举措施 对邮箱/用户名校验功能添加图片验证码 限制单位时间内的尝试次数 对所有验证请求一视同仁(避免通过响应差异暴露信息) 权限控制 重置密码前要求验证原始凭证(如注册手机/邮箱) 关键操作需多重验证 日志监控 记录所有密码重置操作 监控异常重置行为(如频繁尝试、跨地域操作等) 总结 任意用户密码重置漏洞危害严重,攻击者可借此接管任意用户账号。开发人员应特别注意密码找回功能的安全性设计,避免将敏感凭证泄漏至客户端,同时对可能被枚举的参数添加适当防护措施。安全测试人员在进行渗透测试时,应重点关注密码找回流程中的逻辑缺陷和敏感信息泄漏问题。