文章目录
1. 任意密码重置漏洞原理
厂商在对密码修改功能设计的时候,未对修改密码的凭证做严格的限制,导致可以被绕过进行任意的密码修改。
2. 任意密码重置漏洞产生原因
3. 任意密码重置漏洞场景
3.1 验证码爆破
表现:
- 验证码四位,服务端未对验证时间次数进行限制(出现次数比较多的地方);
- 验证码六位,但是不过期(时间很久),并且没有对验证的次数进行限制;
- 验证码可以发送多次,而且每次都不会过期。
利用:使用burp的爆破模块即可,或者自己编写脚本。
修复:使用六位验证码,限制验证码认证次数。
案例流程:
- 重置密码发送手机验证码
- 发现验证码只有四位
- 利用burp进行爆破
- 爆破成功
- 重置密码
3.2 验证凭证回传
重置密码时,凭证为发送到手机上的验证码,但是通过拦截发送验证码请求对应的Response包时,发现验证码在Response包中。
重点:注意是凭证,有时候可能返回包里面凭证可能在cookie里面或者也有可能在其他地方。
解决方案:修改包的返回规则
案例:DeDecms任意密码重置
- DeDecms是用户使用最多的PHP类cms系统