密码找回逻辑漏洞总结

密码找回逻辑漏洞总结

密码找回逻辑测试一般流程

  • 首先尝试正常密码找回流程,选择不同找回方式,记录所有数据包
  • 分析数据包,找到敏感部分
  • 分析后台找回机制所采用的验证手段
  • 修改数据包验证推测

这是最近整理的一些东西:

验证码不失效:可以爆破,现在几乎没有了

验证码直接返回:点击获取验证码之后,返回包里直接有验证码或者(短信)验证码的 md5值(很少了)

验证码未绑定用户或手机:

  • 只要验证码对就行,获得验证码后,拦一下数据包改成别人的,改的也是别人的,不是一开始输入的那个 ;
  • 有的时候会有一个加密的参数认证,这个时候推出加密算法是不现实的,只需要提前走一边流程,把要修改密码账户的加密值拿到就行;
  • 还有一种情况,手机和验证码绑定,但是用户没和手机绑定。通过数据包改成其他用户的手机或者其他方式改掉用户名就可以
  • 绕过本地验证:发送到服务器验证后,把结果返回给浏览器,改一下返回包可以欺骗客户端 wooyun-2016-0216112

跳过验证步骤:逻辑漏洞。情况就很多了

  • 提前走一边流程记下每个步骤的网址,然后到输入验证码后直接进入输入新密码的界面。wooyun-2016-0225958
  • 比如说他会发送用户一个邮件,结果邮件里的网址get过去的参数是可以改的,这时候提前知道url后输入任意用户名即可重置此用户的密码wooyun-2016-0207468

未校验用户字段的值:最后一步把新密码传到服务器的数据包中用户名或者手机号被修改后直接成功修改该用户的密码,后台没有做校验

修改密码处id/用户名可替换:还是没有做校验

cookie值的替换:虽然没有直接把除了密码以外的信息直接post上去,是用的cookie判断的身份。但其实换别人cookie就重置了此人的密码,只要再走一遍流程获得其他用户的cookie并替换到最后一步得住举报中即可

修改隐藏字段:字面意思 ,比如说loginid之类的字段

修复手段还在学习整理中,目前最通用的办法:简单来说在获取当前登录用户的时候,对该用户的身份进行确认,以及安全验证该用户是否存在操作的权限,在请求中加以token随机值在服务器端对每一次的请求进行token效验。