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