一篇文章教你如何找出找回密码漏洞。(新手推荐)
字数 1190 2025-08-25 22:58:47

找回密码漏洞挖掘指南

漏洞类型概述

找回密码功能是网站安全的重要环节,常见的漏洞类型包括:

  1. 修改标志位绕过验证
  2. 修改接收验证码的手机号
  3. 删除验证码参数绕过
  4. 验证码爆破攻击

第一种:修改标志位绕过验证

漏洞原理

前端验证标志位(status)可被用户修改,后端未对验证状态进行二次校验。

复现步骤

  1. 注册账号并进入找回密码流程
  2. 输入正确验证码,使用Burp Suite拦截请求
  3. 观察返回包中的status参数(正确时为1,错误时为-1)
  4. 输入错误验证码,拦截请求
  5. 修改返回包中的status参数从-1改为1
  6. 放行请求,观察是否成功进入密码重置页面

漏洞成因

后端仅依赖前端返回的状态标志位判断验证是否通过,未在服务端进行状态验证。

第二种:修改接收验证码的手机号

漏洞原理

后端仅验证验证码正确性,未验证验证码与手机号的绑定关系。

复现步骤

  1. 准备两个手机号(A和B),用手机号A注册账号
  2. 在找回密码时获取验证码,观察短信发送到手机号A
  3. 拦截验证码请求,将接收手机号修改为B
  4. 验证码将发送到手机号B,使用该验证码可重置手机号A的密码

漏洞成因

后端逻辑缺陷:只检查验证码是否正确,未验证"验证码-账号-手机号"的绑定关系。

第三种:删除验证码参数绕过

漏洞原理

后端使用存在缺陷的反向验证逻辑,当验证码参数为空时跳过验证。

复现步骤

  1. 寻找使用特定CMS的网站(如文中提到的莫CMS)
  2. 尝试常见管理员用户名(admin、网站名称等)
  3. 找到存在的管理员账号后,进入密码找回流程
  4. 拦截请求,删除验证码参数(如love参数)
  5. 放行请求,观察是否直接返回密码

漏洞成因

后端代码可能存在类似逻辑:

if (!empty($_POST['captcha']) && !$validator->check_word($_POST['captcha'])){
    // 仅当验证码存在且错误时才报错
    sys_msg($_LANG['captcha_error'], 1);
}
// 其他情况直接通过验证

第四种:验证码爆破攻击

漏洞原理

验证码位数过少且无尝试次数限制,可通过暴力破解获取正确验证码。

复现步骤

  1. 在目标网站注册账号
  2. 进入找回密码功能,获取4位验证码
  3. 使用Burp Suite的Intruder模块对验证码进行爆破
  4. 通过响应包长度差异识别正确验证码

防护建议

  • 增加验证码位数(6位以上)
  • 限制单位时间内的尝试次数
  • 设置验证码短有效期(如5分钟)
  • 结合IP/设备指纹进行限制

安全建议

开发人员防护措施

  1. 所有验证逻辑必须在服务端完成
  2. 验证码应与账号、手机号严格绑定
  3. 重要操作需多因素验证
  4. 实施合理的尝试次数限制
  5. 避免使用可预测的管理员用户名

渗透测试注意事项

  1. 测试前确认授权范围,避免法律风险
  2. 政府网站(.gov.cn)等敏感目标需特别谨慎
  3. 建议使用自己注册的账号进行测试
  4. 发现漏洞后及时报告,避免恶意利用

扩展阅读

  • FreeBuf搜索:"任意用户密码重置"(yangyangwithgnu系列文章)
  • OWASP认证测试指南中的认证测试部分
  • 各类CMS已知漏洞库

通过系统性地测试这些漏洞点,可以有效评估网站密码找回功能的安全性。记住,发现漏洞后应负责任地披露,帮助提升整体网络安全水平。

找回密码漏洞挖掘指南 漏洞类型概述 找回密码功能是网站安全的重要环节,常见的漏洞类型包括: 修改标志位绕过验证 修改接收验证码的手机号 删除验证码参数绕过 验证码爆破攻击 第一种:修改标志位绕过验证 漏洞原理 前端验证标志位(status)可被用户修改,后端未对验证状态进行二次校验。 复现步骤 注册账号并进入找回密码流程 输入正确验证码,使用Burp Suite拦截请求 观察返回包中的status参数(正确时为1,错误时为-1) 输入错误验证码,拦截请求 修改返回包中的status参数从-1改为1 放行请求,观察是否成功进入密码重置页面 漏洞成因 后端仅依赖前端返回的状态标志位判断验证是否通过,未在服务端进行状态验证。 第二种:修改接收验证码的手机号 漏洞原理 后端仅验证验证码正确性,未验证验证码与手机号的绑定关系。 复现步骤 准备两个手机号(A和B),用手机号A注册账号 在找回密码时获取验证码,观察短信发送到手机号A 拦截验证码请求,将接收手机号修改为B 验证码将发送到手机号B,使用该验证码可重置手机号A的密码 漏洞成因 后端逻辑缺陷:只检查验证码是否正确,未验证"验证码-账号-手机号"的绑定关系。 第三种:删除验证码参数绕过 漏洞原理 后端使用存在缺陷的反向验证逻辑,当验证码参数为空时跳过验证。 复现步骤 寻找使用特定CMS的网站(如文中提到的莫CMS) 尝试常见管理员用户名(admin、网站名称等) 找到存在的管理员账号后,进入密码找回流程 拦截请求,删除验证码参数(如love参数) 放行请求,观察是否直接返回密码 漏洞成因 后端代码可能存在类似逻辑: 第四种:验证码爆破攻击 漏洞原理 验证码位数过少且无尝试次数限制,可通过暴力破解获取正确验证码。 复现步骤 在目标网站注册账号 进入找回密码功能,获取4位验证码 使用Burp Suite的Intruder模块对验证码进行爆破 通过响应包长度差异识别正确验证码 防护建议 增加验证码位数(6位以上) 限制单位时间内的尝试次数 设置验证码短有效期(如5分钟) 结合IP/设备指纹进行限制 安全建议 开发人员防护措施 所有验证逻辑必须在服务端完成 验证码应与账号、手机号严格绑定 重要操作需多因素验证 实施合理的尝试次数限制 避免使用可预测的管理员用户名 渗透测试注意事项 测试前确认授权范围,避免法律风险 政府网站(.gov.cn)等敏感目标需特别谨慎 建议使用自己注册的账号进行测试 发现漏洞后及时报告,避免恶意利用 扩展阅读 FreeBuf搜索:"任意用户密码重置"(yangyangwithgnu系列文章) OWASP认证测试指南中的认证测试部分 各类CMS已知漏洞库 通过系统性地测试这些漏洞点,可以有效评估网站密码找回功能的安全性。记住,发现漏洞后应负责任地披露,帮助提升整体网络安全水平。