逻辑漏洞总结

0x00 漏洞介绍

业务逻辑漏洞是指由于程序逻辑不严谨或逻辑太复杂,导致一些逻辑分支不能正常处理或处理错误。

0x01 常见场景

逻辑漏洞

0x02 漏洞场景

1. 验证码爆破

有些系统,手机获取验证码的时候,没有对验证码的验证次数进行限制,或者是没有对验证码的有限时间进行限制,就会造成验证码爆破。

四位验证码十分钟之内可以轻松爆破,六位建议放弃。

2. 凭证返回

凭证返回即,手机号码登录某系统,抓包,返回的相应包的set-Cookie字段或其他字段里面直接返回了验证码,我们可以直接输入该验证码,成功登录绕过。

3. 验证绕过

这招之前没想到,很实用

不只是验证码,在某些密码找回,或者验证用户凭证的时候,会根据返回的状态码进行校验,假设验证码是正确的,返回的状态码位200,错为500,这里我们就可以通过抓取响应包,修改状态码为200,即可达到验证绕过。

又学会了一招——抓响应包

抓响应包:在Burp里面的Do intercept -> Response to this request。

image-20210626185929342

4. 短信轰炸

不多比比,直接上burp。

5. session覆盖

也是没想过的一招,很厉害的一个思路

同一浏览器,打开两个密码找回页面,第一个页面输入自己的账户进行邮箱密码找回,进入自己的邮箱查看密码找回链接。接着第二个页面输入他人账户,进行密码找回,返回自己的邮箱点击链接,由于 session 覆盖导致了,这个链接成为了修改他人密码的链接,成功修改他人密码。

不仅是密码找回可以用,登录也可以覆盖。同一个浏览器打开两个页面登录两个用户,第二个用户会覆盖第一个用户,由于同一个浏览器一般公用session,所以第二次登录的时候把第一次的sessionid覆盖掉了,不过没什么威胁性就是了。

6. 逻辑越权

分为水平越权和垂直越权(未授权访问的话应该也属于垂直越权吧,应该吧),越权漏洞很常见,20年的时候,淘宝仍然存在越权漏洞,被黑产利用,获取了很多信息。所以,每当大公司存在越权漏洞,伴随着的都是大量的信息泄露。

逻辑越权一般都有一个关键的数字参数,遇到了就修改一下吧

每个页面都可以抓包试一下

1.订单越权:通过修改URL的订单id值越权查看订单(有些是在POST包中修改)

2.收获地址越权:收货地址这里碰到的还是蛮多的,在收货地址的地方,查看收货地址,有些通过修改address的id值即可查看别人的收货地址,还有越权修改别人的收货地址,这里有一个小套路,假设此站点的收货地址存在xss漏洞,就可以通过修改别人的收货地址打到cookie,这里也算是个组合拳吧。还有就是思路需要灵活,有些开发对会员中心的收货地址进行限制了,但是在提交订单的地方,也是可以越权查看他人的收货地址的。

3.资料修改:这里跟收货地址其实没什么区别,也可以通过xss进行组合拳。

4.其实还有很多越权的方式,丰富的渗透大师都是自己总结的。

7. 换绑手机,密码重置

又是一个没有想过的小技巧,主要是没有环境来练手就没想到

这种漏洞是后台没有对账户和绑定手机号进行检验

我们可以通过抓包修改绑定的手机号码为我们的手机号,即可造成密码重置,或者一些别的操作。

8. 支付类逻辑

一句话,哪里有钱搞哪里

1.商品价格修改:在购买商品的时候,通过抓包通过修改商品的价格,可以尝试修改为负数,让他给你退钱。这里修改商品价格的地方很多,加入购物车的时候可以修改,提交订单的时候也可以修改,这个看情况进行修改。

2.商品数量修改:有些开发会对商品的价格进行封装,我们通过修改数据包没法进行修改,但是这里的商品数量可以改为-1,然后我们再选择别的商品,即可造成价格抵扣。这里修改的地方也是加入购物车的时候可以修改,提交订单的时候也可以修改。

3.运费修改:这个跟以上同理,但是有些开发只对商品做了限制,忽略了运费这一点,通过修改运费为负数,即可抵扣商品。

4.支付金额修改:这个就是最后一步支付的时候,可以修改订单的价格,造成低价购买。

如果价格那些参数值都被加密了,还可以拿别的商品的价格(比原商品低),覆盖原有商品的价格。

9. 条件竞争漏洞

造成这种漏洞的原因一般是,并发数据库锁处理不当或者线程没有加锁,短信轰炸就是这个原理。

抓取商品的付款成功的请求包,重放请求包,如果成功,可以用买一件商品的钱买几十件商品。

优惠券也可以重放请求包。

0x03 总结

逻辑漏洞的挖掘其实也是思路拓展的过程

  1. 测试业务的时候,先了解清楚业务整体流程,可以利用思维导图快速理清各个业务之间的关系也可以通过查看 JS 了解(JS 中可能会存在信息泄漏)

  2. 重点关注的业务:个人(他人)信息、密码修改(找回)、支付流程、注册流程、需要手机(邮箱)验证的业务

  3. 对每个业务模块进行抓包,分析其中各种请求,注意 特殊参数,很有可能就是这些 特殊参数 决定了业务步骤

  4. 抓包重放的过程,需要多次实验,判断是否可以跳过(绕过),如何跳过(绕过),纯数字可以用 数字 + 字母 尝试绕过

  5. 返回包中数据的分析,关注特殊字符串和特殊参数

  6. 综上所述,业务流程需同时结合 HTTP/HTTPS 请求分析,关注重点在各种可以用于区别的参数,绕过必要验证,跳过业务步骤。

0x04 参考链接

https://blog.csdn.net/weixin_44578334/article/details/105920859