逻辑漏洞从任意密码重置开始

一、前言

逻辑漏洞是指由于程序逻辑不严或逻辑太复杂,导致一些逻辑分支不能够正常处理或处理错误,一般出现在任意密码修改(没有旧密码验证)、越权访问、密码找回、交易支付金额等。刚开始接触逻辑漏洞,任意密码重置这块是最适合入手研究的,一般web服务的业务都是从注册账号开始的,注册完成之后就可以进行密码重置的测试,密码重置的逻辑方法多,测试方法简单,漏洞等级高,回报成果大。

二、测试流程

  • 首先要做的就是账号注册

    一般注册账号都会要求使用手机验证码,

  • 接下来就是对验证码这块进行测试

    一般测试方向为改手机号接受验证码,在使用另一个手机号组合接受到的验证码进行测试,如果注册成功,就是任意手机号注册,证明网站对手机验证码的校验不严格,验证码和手机号没有做强绑定。

    那么根据网站的逻辑,那么很可能全站都存在验证码校验不严格的问题,那密码重置这块使用同样的方法就很有可能存在任意密码重置。这时就需要放一放刚才发现的任意手机号注册,直奔忘记密码去(一般src对任意手机号注册的评级都不高)

  • 接下来测试忘记密码的功能

    到了忘记密码这里,我们首先要做的就是走一遍流程,查看一下密码重置的流程,不同的网站的流程是不同的,这对是否存在密码重置起着决定性作用

    一般流程分为两种

    • A: 1.输入帐号->2.验证账号->3.重置密码->4.成功(验证信息和新密码分开发送)

    • B: 1.输入帐号->2.验证账号+重置密码->3.成功(验证信息和新密码一起发送)

三、验证码验证不严格

在我们要接收验证码前抓包

将数据包手机号更改为可以接受验证码的手机号,然后发包走正常流程这里推荐一个接受验证码的网站,解决手机号不够用的情况 https://www.pdflibr.com/

重置成功后立马交洞(重置成功以账号可登录为准),交完之后还回到这里,要开始一洞多吃了

验证码验证不严格造成的结果就是整个网站接收到的验证码可能是通用的我们再走一次流程,这次拿自己的手机号,拿到验证码之后回到前面,换一个目标账号,用刚才的验证码再来一次,成功了,ok又一个洞到手了。以为这就完了?马上去注册的地方,同样走流程,拿到验证码后去重置密码,又成功了?不用再说了全站去找接受验证码的地方

四、参数污染

这个方法就要简单好多了,同上面要接收验证码前抓包,但不是改手机号,而是加一个手机号增加一个相同的字段,用可以接受验证码的手机号,如果两个手机都接受到了验证码,并且验证码相同,那么基本上就稳了,但也会有失败的情况。

五、回显参数修改

这个方法有两个前提

  1. 符合流程A: 1.输入帐号->2.验证账号->3.重置密码->4.成功(验证信息和新密码分开发送)
  2. 回显参数无随机参数的验证

发包后即可跳到下一步输入新密码,有的网站会存在返回并验证一个随机值如图,这种情况就不行了

有些网站可能会将验证码放在回显包里一起发给浏览器

六、步骤跳跃

这种方法类似于改状态码的目的,在于跳过验证账号这一步同样走一遍流程,在到最后一步提交新密码时抓包复制这个包的包头换目标账号,在提交验证码时抓包,把包头修改为刚才复制的包头,发包,成功的情况是浏览器会跳到输入新密码的页面**
复制正常流程包头如下图

下图为验证码包

将包头替换,最好是把字段也加上

页面跳到了最后一步,再输入密码进行重置

七、爆破验证码

在这里推荐对四位数验证码进行爆破

提交验证码时抓包

burp右键发送到intruder,点击Positions设置参数,点击Payloads设置字典,点击Options设置线程,点击start开始爆破

爆破完成后点击Length,按返回包长度排序,找到和其他长度不同的包,查看状态码确认,如图,两个包状态码都为1,有两个是因为这个站又一个万能验证码9527

八、修改用户标识

通过上述几种方法或正常流程到达最后一步后,在需要提交新密码时,数据包中可能会有用户标识的字段,通过修改用户标识为目标账号后再发包即可重置其他账号密码

但也有可能当前数据包绑定了账号无法通过修改id改密码

此时可以尝试一些删除包中的其他一些参数,就可能早造成服务器无法校验用户标识,直接重置成功

九、邮箱验证,密保问题验证

邮箱验证大致和手机验证码一样,不过有一个通过链接重置同样走一遍正确流程,观察邮箱收到的链接链接一般会有时间戳,用户表识等构成,通过构造链接访问修改密码界面,在完成账号验证时,也可能是生成一个链接跳转到提交密码界面,同样可以通过构造链接,访问修改密码界面
密保问题,同样可以使用修改状态码,或者是结合越权修改别人的密保问题

十、总结

逻辑漏洞复杂,且又灵活多变,测试一定结合网站逻辑灵活变动自己的测试方向,每一个方向都可能带来巨大的收获


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1975763359@qq.com

💰

Title:逻辑漏洞从任意密码重置开始

Count:1.7k

Author:zcsmile

Created At:2023-03-16, 16:29:08

Updated At:2023-03-16, 17:31:28

Url:https://zcsmile.github.io/2023/03/16/1/

Copyright: 'Attribution-non-commercial-shared in the same way 4.0' Reprint please keep the original link and author.

×

Help us with donation