什么是重置密码逻辑漏洞:
重置密码是给用户在忘记密码的时候更改密码的功能,当校验有缺陷时,就会被别人绕过更改任意用户密码。
常见问题:
重置密码身份校验与修改密码功能分开,修改密码的时候没有再次校验用户身份,导致攻击者利用自己身份绕过前面的身份校验,然后在修改密码的时候更改修改密码的用户id,来达到更改他人的密码。
攻击过程:
1、收集需要更改的用户信息(如:用户id、用户名等);
2、获取请求重置密码的业务接口;
3、利用工具更改请求该接口所需的用户信息(即用户id、用户名等);
4、后端对应业务收到请求后,更改该用户的密码。
防护建议:
1、后端校验当前修改密码的用户身份与前面校验用户身份(如:手机短信验证码)是否匹配;
2、用户身份信息(如:用户id、用户名等)加密,不可被猜解;
3、如果使用加密信息校验用户身份,需要保管好加密信息,不能随意显示在外面,并且限制好加密信息有效范围,防止加密信息泄密后被攻击者利用。