zoukankan      html  css  js  c++  java
  • 任意用户密码重置的10种姿势(看视频记的笔记)

    原视频来源:https://www.butian.net/School/content?id=214(如若侵权,请联系我)

    以下内容仅供学习,切勿有任何违法行为!!!

    1. 验证码不失效

    模型图:

     原因:找回密码时,会获取验证码,但是验证码缺少时间限制,仅仅判断了验证码是否正确,而未判断验证码是否过期。(时效性)

     测试方法:通过枚举找到真正的验证码输入验证码完成验证(爆破)

    2. 验证码直接返回

    模型图:



    造成原因:输入手机号后点击获取验证码,验证码在客户端生成,并直接返回在Response以方便对接下来的验证码进行比对。 测试方法:直接输入目标手机号,点击获取验证码,并观察返回包即可。在返回包中得到目标手机号获取的验证码,进而完成验证,重置密码成功。

    3.验证码未绑定用户
    模型:
    
    
    

    造成原因:输入手机号和验证码进行重置密码的时候,仅对验证码是否正确进行了判断,未对该验证码是否与手机号匹配做验证。 测试方法:在提交手机号和验证码的时候,替换手机号为他人手机号进行测试,成功通过验证并重置他人密码。

    用户可以是lili什么的也可以手机号 有的会对用户名进行加密 但是加密算法都是一致的。所以先抓包拿到加密后的字符串就行。

    4.修改接收的手机和邮箱(比较常见)

    模型:

      

    造成原因:用户名、手机号、验证码,三者没有统一进行验证,仅判断了三者中的手机号和验证是否匹配和正确,如果正确则判断成功并进入下一流程。(没判断手机号是否和用户名相对应)
    测试方法:输入用户名获取验证码,修改接收验证码的手机号为自己的号码,自己手机成功接收验证码,提交到网站进行验证,验证成功并进入下一流程。
    5.本地验证的绕过
    模型:
    
    
    
    造成原因:客户端在本地进行验证码是否正确的判断,(在客户端给出判断结果)而该判断结果也可以在本地修改,最终导致欺骗客户端,误以为我们已经输入了正确的验证码。(可以修改本地的判断结果)
    测试方法:重置目标用户,输入错误验证码,修改返回包,把错误改为正确,即可绕过验证步骤,最终重置用户密码。
    案例
    
    

    6.跳过验证步骤

     模型:

    造成原因:对修改密码的步骤,没有做校验,导致可以直接输入最终修改密码的网址,直接跳转到该页面,然后输入新密码达到重
    的目的。
    测试方法:首先使用自己的账号走一次流程,获取每个步骤的页面链接,然后记录页面3对应的输入新密码的链接,重置他人用户时,获取验证码后,直接输入页面3链接到新密码的界面,输入密码充值成功。(主要利用页面3)
    从页面1直接跳转到页面3
    
    
    


    
    

     7.未校验用户字段的值

    模型:

    
    
    造成原因:在整个重置密码的流程中,只对验证码和手机号做了校验,未对后面设置新密码的用户身份做判断,导致在最后一步通用户身份来重置他人的密码。(手机号和验证码对的上 ,完事翻篇到输入新密码的时候,我们可以修改手机号)
    
    
    测试方法:使用自己的手机号走流程,在走到最后一个设置密码的流程时,修改数据包里面的用户信息,就可以重置他人的密码。
    
    
    
    8.修改密码处id可替换(不需要知道用户名)
    模型:
    
    

     

    
    
    造成原因:修改密码的时候,没有对原密判断,且根据id的值来修改用户的密码,类似语句:updateusersetpassword='qwerl234' where id ='1'修改数据包里的id的值,即可修他人的密码。
    测试方法:修改自己用户密码,抓取数据包,替换数据包中用户对应的id值,即可修改他人密码
    案例:
    
    

     

    9.cookie值的替换
    模型:
    
    

     

    造成原因:重置密码走到最后一步仅判断唯一的用户标识cookie是否并没有判断该cookie有没有通过之密码过程的验证,导致可替换cookie他人用户密码。(cookie可指定用户获取)(仅仅cookie是否存在但没有判断cookie是否被替换)
    
    
    
    
    测试方法:重置自己用户密码达到最后阶段抓到数据包,并在第一阶段重新抓取目标用户的cookie值,替换cookie到我们抓取的数据包中去,发包测试。
    案例:(除了cookie就没有办法判断用户了)

     10.修改信息替换字段值(情况多,但是比较隐蔽)

    模型:

     

    造成原因:在执行修改信息的sq语句的时候,用户的密码也当作字段执行了,而且是根据隐藏参数loginid来执行的这样就导致修改隐藏参数loginid的值,就可以修改他人的用户密码。

    测试方法:修改个人资料时,抓包,然后修改数据包的参数和对应的值,参数名一般可以在其他的地方找到,替换隐藏的参数即可修改他人密码等信息

    案例:
    
    

     

     而数据包并没有出现loginid

    
    
    
     
  • 相关阅读:
    连接sql sever2008数据库出现了无法连接到数据库引擎问题解决
    关于ssh的一些问题
    23.Xcode中常用的快捷键操作
    22.上传app一些相关问题
    20.cocoapods的安装和使用
    19. UIAlertController 提示框获取文本内容,打印控制台上
    18.safari 安装后flash还是提示安装 flash,视频不能播放
    17.iOS App设置icon,启动图,App名称的方法
    16.iOS APP图标和启动画面尺寸
    15.Xcode8 升级遇到的问题
  • 原文地址:https://www.cnblogs.com/cat47/p/12177499.html
Copyright © 2011-2022 走看看