漏洞简介
什么是密码重置?
顾名思义,就是修改掉原来的密码
密码重置的途径有哪些?
1、一个网站,一般我们可以登录进入个人中心,直接修改密码
2、当我们忘记密码是还可以使用系统自带的密码找回功能进行密码修改
什么是密码重置漏洞?
密码重置这个功能本身没有问题,但如过对密码重置功能的验证机制不够完善就形成了漏洞
密码重置漏洞形式
一、基于修改密码的
如果后台没有对旧密码进行验证,就直接让输入新密码
- 第一种方式,如果存在csrf漏洞,我们就可以利用一波
- 如果存在越权漏洞,就可以直接修改其他人的密码
- 点击修改后抓包测试,观察数据库包有没有验证类似cookie随机数,如果没有的话,可以尝试修改用户名、手机号或者uid来尝试重置其他密码
如果后台是通过向注册手机或者注册邮箱来重置密码的,关于验证码的漏洞我们都可以尝试,这种方式的前提是你已经通过某种方式进入到了对方的个人中心,所以意义不太大
二、基于找回密码的
一般情况下当我们点击找回密码的时候都是通过验证手机号或者验证邮箱,这就又变成了验证码的问题
- 验证码发送后前端返回
- 为限制验证码次数导致验证码爆破
- 验证码有规律或可控
- 验证码被放在返回包中
- 输入验证码后通过修改响应包的状态来重置密码
- 验证码为空(原理就是后台未考虑验证码为空的情况,直接就是如果存在,然后下面仅判断了存在的情况)绕过或者万能验证码
- 拦截数据包,发送验证码时可以向多个手机号发送验证码,这个时候就可以添加个云短信,直接接受验证码完成修改等等
还有一种情况就是,找回密码的哥哥页面没有实质型关联,我们可以跳过手机验证页面,直接访问重置密码页面
什么是任意密码重置
以下是个人理解
首先要说一下任意密码重置,肯定比密码重置漏洞危害性更大
那什么才能叫任意呢?
我觉得提到任意,肯定是我们可以获取大部分的账户,上述基于修改密码的第三条,如果修改uid,可以成功修改其他用户密码,这肯定就算一个任意密码重置,因为我们可以注册两个用户得出uid规则,可以被枚举
那其他类型的密码重置漏洞呢?其他类型想要产生任意效果需要配合用户枚举漏洞
最常见的自然是莫过于,过于友善的登陆页面提示,比如:用户名不存在、密码错误之类的
还有就是在注册页面,基本都会提示该用户已注册,这没什么有效的方式,加个token防止数据包被重放吧,当然人家也可能用的爆破
其他的方式的话,也许可以想到信息泄露或者社工。。不在列举
漏洞案例
验证码前端返回:乌云漏洞库
验证码可控:乌云漏洞库
验证码在响应包中:乌云漏洞库
修改响应包状态:乌云漏洞库
验证码爆破:乌云漏洞库
跳过认证直接修改:乌云漏洞库
先这些吧,其他的漏洞类型可以去乌云镜像查找 镜像地址