概念



为了防止用户遗忘密码,大多数网站都提供了找回密码功能。
常见的找回密码方式有:邮箱找回密码、根据密码保护问题找回密码、根据手机号码找回密码等
其中密码找回漏洞在逻辑漏洞中占了较大的比例。
测试密码找回漏洞与其他逻辑漏洞的方法相同,其中必经的两个步骤是:熟悉业务流程(密码找回过程)与对流程中的HTTP数据包请求进行分析。
重定向用户&重定向地址
重定向用户
在操作中对对象进行改动,修改邮箱、修改用户id……
案例:eyoucms任意用户密码重置漏洞 -只要知道对方邮箱号就能重置密码
业务流程:

操作账号:
test:123@qq.com
test2:xxx@qq.com
使用test2的邮箱进行找回密码操作,收到验证码再下一步时进行抓包



使用test用户和重置的密码即可登陆,造成任意用户密码重置漏洞
漏洞原理:服务器只追求验证码是否正确,并没有发现在数据包中对象都被替换了
重定向发送地址
案例:metinfo
业务流程

输入账户,然后进行抓取数据包



原理:数据包中不写入某些参数,则按照默认逻辑发送(发送到相关邮箱),否则以参数地址为准(与代码逻辑有关)
实战中:观察数据包中某些参数和参数值,看是否影响数据包发送
根据逻辑思考、尝试、推算参数名

修改响应包&跳过步骤法
跳过步骤法
案例:hdwiki
逻辑:当修改密码时,直接抓取修改密码时的数据包,进行修改发包,跳过验证码验证的流程
不看一二步,直接进行第三步
然后构造修改数据包

修改响应包
漏洞成因:前端js校验,只检测数据包是否符合条件
注意:虽然某些页面可以通过修改响应包进行绕过验证码等逻辑,但是后端服务器如果不进行相关操作,会造成提示密码修改成功,但其实并没有修改的假象
案例:eyoucms
先正确输入验证码看返回包



尝试用错误的验证码和正确的返回验证尝试修改密码



放行修改后的包,也是绕过验证,成功来到了密码修改界面

案例这里是可以通过修改响应包来进行密码修改,且能修改成功的
注意:不是修改响应包,进入修改密码界面,就能一定能把密码修改成功,有些还有后端相关验证操作,否则只是一个假象
其他案例:某短剧小程序,通过修改响应包的某些参数,修改账户名和相关金币值
回显验证码&验证码爆破
回显验证码(少)
验证码在数据包或返回包里产生了,多关注数据包中的某些参数值,可能找到验证码
验证码爆破
burpsuite – intruder模块
观察验证码复杂度、验证码过期时间 纯数字、数字加字母
爆破观察响应包长度判断是否爆破成功
复盘
万能验证码(开发便利性):https://mp.weixin.qq.com/s/iFsEa2IYLo9gOZBPYIHssw
https://mp.weixin.qq.com/s/6cR7DVQaZYSs131Y3TvVLA
https://mp.weixin.qq.com/s/u6PC_ZR-QCJhZOuBEOL4Cg
https://mp.weixin.qq.com/s/hnEwAJpcbe7FsSlQOWuNUw
https://mp.weixin.qq.com/s/5A5L1MHJh9JtokyYRrfqeg
https://mp.weixin.qq.com/s/DHFQ5tZ7nmLzThE0zJz6qA
本节知识点
1、WEB攻防-找回密码-重定向用户&重定向地址
2、WEB攻防-修改密码-修改响应包&跳过步骤法
3、WEB攻防-验证码-回显验证码&验证码爆破
