米斯特白帽培训讲义 漏洞篇 逻辑漏洞

    这是补天平台上的一个案例:

    首先注册一个账号,然后找回。

    我们收到的验证码是六位数。如果网站没有设置频率限制,或者最大尝试次数限制的话,那我们自然就会想到可以爆破它。

    漏洞篇 逻辑漏洞 - 图1

    然后抓提交手机验证码的封包,我们可以看到没有任何图片验证码:

    发送到 Burp 的 Intruder:

    漏洞篇 逻辑漏洞 - 图2

    只给添加标志,然后将字典类型设置为数字,范围为000000 ~ 999999。然后爆破,结束后我们发现了一个与众不同的封包。

    将里面的验证码提交之后便可重置密码。

    这是某个网站的注册页面:

    漏洞篇 逻辑漏洞 - 图3

    我们模拟注册一下,发现手机验证码是四位:

    然后抓注册的封包:

    漏洞篇 逻辑漏洞 - 图4

    然后将字典设置为四位数字 0000 ~ 9999,进行爆破:

    Get it!

    目标是www.vobao.com

    首先注册,然后直接退出找回,我们看到它是邮箱验证。

    然后查看验证邮件:

    漏洞篇 逻辑漏洞 - 图5

    我们发现其中有一个vstr,它跟找回密码页面中的某个 URL 是一样的,也就是一个标志。

    那么就应该起到类似验证码的作用。如果我们不填写vud直接访问,显示无效。那么就能确定它是验证码了。

    漏洞篇 逻辑漏洞 - 图6

    这个vud看起来像是个md5,但是实际上是随机码。那么我们尝试拿另一个邮箱注册找回:

    可以看到vstr是不一样的,当然也不一样。但是如果我们邮箱2的vud拼接到邮箱1的vstr上呢?由于邮箱1的vstr是已知的,即使我们访问不了邮箱1,也可以通过找回密码页面的 URL 来获得,那么我们就可以构造出:

    漏洞篇 逻辑漏洞 - 图7

    提交后就成功了。

    假设邮箱1是别人的邮箱,我们不能访问其内容,但我们能够控制邮箱2,那我们就能拿邮箱2来重置邮箱1的账户。可以看到,这个漏洞的主要成因就是未对不同用户的验证码进行区分。其中起到用户标志的作用,vud起到邮箱验证码的作用。