基本介绍
密码找回逻辑含有用户标识(用户名、用户ID、cookie)、接收端(手机、邮箱)、凭证(验证码、token)、当前步骤等四个要素,若这几个要素没有完整关联则可能导致任意密码重置漏洞,其中在部分Web应用系统的密码重置阶段,密码重置时操作的对象一般会以用户ID为标识,但是由于ID可预测导致用户可以通过更改ID的方式重置任意用户的密码
漏洞复现
注册登录后退出打开忘记密码页面(https://xxx.xxx.xxx/validate/reset_email.html),输入信息获取验证码后来到第二步进行更改密码并抓包
将标识fid参数更改为其他账户,之后可以成功完成密码重置操作
修复方案
从session里获取fid用于验证用户身份而不从数据报中的fid参数中获取数值作为用户的身份标识参数