任意密码重置漏洞是指攻击者通过利用系统在密码找回流程中的逻辑缺陷,绕过正常的身份验证步骤,实现对目标用户账户密码的重置,以下是关于任意密码重置漏洞的详细分析:
一、漏洞成因
1、重要凭证泄露:
验证码信息随请求一起发送到服务端,通过拦截数据包可发现正确验证码。
构造修改密码的URL中重要的参数在客户端请求中出现,可伪造目标邮箱中修改密码的URL,达到任意修改密码的效果。
2、重要凭证客户端可篡改:
请求包包含接收端参数,可抓包更改。
直接修改:更改密码的请求中带有接受验证码的手机号,改为自己手机号后可得到验证码。
间接修改:第一步确认更改的目标账号,第二步更改密码的请求包中有user_name字段用来确定关联接收端的手机号,抓包改为自己的user_name后得到验证码。
3、用户混淆:
密码找回逻辑含有用户标识(用户名、用户ID、cookie)、接收端(手机、邮箱)、凭证(验证码、token)、当前步骤等四个要素,若这几个要素没有完整关联,则可能导致任意密码重置漏洞。
4、Token可预测:
开发人员习惯以时间戳、递增序号、关键字段(如邮箱地址)等三类信息之一作为因子,采用某种加密算法或编码生成token。
攻击者可以基于能收集到的关键字段,用常见加密算法计算一遍,以判断是否可以预测出token。
5、其他因素:
验证码结构简单且未设置过期时间,可直接用burp爆破。
应答中存在影响后续逻辑的状态参数。
MVC数据对象自动绑定漏洞。
二、漏洞危害
导致用户账号丢失、信息丢失、财产损失等。
对企业来讲,任意账号重置的漏洞将会丢失大量数据,失去用户信任,严重妨碍企业业务,带来巨大的财产损失。
三、挖掘与利用方法
1、任意账户密码重置:
描述:该漏洞存在于用户重置密码一般流程的各个环节。
挖掘:包括验证码可爆破、短信验证码显示在获取验证码请求的回显中、注册手机号及短信验证码未进行匹配性验证等。
2、Token可预测:
基于时间戳生成的token。
基于递增序号生成的token。
基于关键字段生成的token。
3、其他利用方法:
重置步骤未进行校验。
重置请求未验证身份。
登录成功修改密码功能平行越权。
未校验身份信息的唯一标识cookie信息。
四、修复防范措施
严格控制四个因素(操作者、用户账号、用户凭证、当前步骤),使他们相互验证。
设置验证码复杂度、有效时间、有效次数。
禁止使用前端判断验证码。
防止平行越权漏洞。
校验重置步骤,防止跳过某一步骤。
任意密码重置漏洞是一个严重的安全问题,它允许攻击者绕过正常的验证流程,重置目标用户的密码,为了防范此类漏洞,开发者需要确保在密码找回流程中的各个步骤都进行严格的验证和校验,避免敏感信息的泄露和可预测性,对于用户来说,也应该提高安全意识,不随意点击来历不明的链接或提供个人信息给不可信的来源。
到此,以上就是小编对于重置密码漏洞的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。
本文来源于互联网,如若侵权,请联系管理员删除,本文链接:https://www.9969.net/89283.html