从零开始的业务逻辑漏洞挖掘

admin 2021年2月18日00:30:50评论187 views字数 3446阅读11分29秒阅读模式

最近总是有人私信我,怎么挖漏洞啊,哪些大佬平时是怎么挖洞的啊,为什么我挖不到啊,针对这些问题我只能回答:“很抱歉,我不是什么大佬,也不是靠挖SRC平台生活的人,我只是一个菜鸡”,所以博主作为一名菜鸡,将自己的逻辑漏洞挖掘技巧分享出来,请注意:本篇文章并没有什么新思路,骚姿势,完全是很基础的文章

什么是逻辑漏洞?

如果要正式的回答,我认为“所有漏洞都可以是逻辑漏洞,因为每个漏洞都有自己的逻辑顺序,比如SQL注入,因为攻击者输入恶意的SQL语句,并且服务端没有做任何防御措施,所以SQL语句会在数据库进行拼接,导致了SQL注入”这样的过程不就是整个逻辑导致的吗?当然,一般说的逻辑漏洞是对在业务逻辑验证中,改变了业务系统原有的逻辑,导致实现了攻击者预期的效果,博主在这里也不较真了,其实主要想告诉你们的是,如果想要挖掘逻辑漏洞,就必须打好基础。

不用于通用型的漏洞,用工具一跑就得到结果了,挖掘逻辑漏洞更讲究的是你对这整个业务的逻辑是怎么样的理解,如果理解,那么就必须拥有一定的开发方便的知识和基础,以下我会一 一列举,如果有漏掉的,也欢迎指出:

  • HTTP协议原理(这个不用多说,挖逻辑漏洞就是要和HTTP打交道)

  • 服务端语言(了解语言的特性,可以让你理解,整个业务的数据流在后端是怎么处理的)

  • Burp Suite工具的熟练使用 (如果你连这个工具都不知道的话,那么你就没必要往下看了)

  • 前端语言(了解前端语言,尤其是js,可以让你理解,当返回信息到浏览器的时候,浏览器是怎么一个过程)

  • F12的使用(F12就是审查元素啦,火狐的话用Fire BUG插件,调到网络选项卡,用来查看数据流)

  • Cookie与Session的理解(这个比较重要的一个了,不过学服务端语言中会学到,大部分逻辑漏洞都和Cooie和Session有关)

这里博主就想不出了,如果还有的话,欢迎联系博主QQ来补充,接下来,我将分享如何挖掘逻辑漏洞

如何挖掘逻辑漏洞:

如果不满足博主列举的基础的话,就没必要往下看了。

废话不多说,进入正题

挖掘逻辑漏洞之前,一定一定要理解这个业务系统他是怎么运作的,他的逻辑是什么。这里我们看一下,本人在实际挖掘中的一个案例

我们首先来到这个直播平台密码重置的地方,输入手机号,然后发送验证码

从零开始的业务逻辑漏洞挖掘

这里我发现了一个问题,我收到的验证码是4位数,时效性这里我忘记了,反正时间是挺长的,这样的话,我们思考一下,他的业务逻辑是怎么样的

判断账号是否存在,让用户获取验证码,当用户提交过来数据的时候,先判断验证码是否是4位数,判断验证码是否存在,判断验证码是否是这个手机号的,验证第一次输入的密码和第二次输入的密码是否是一样的。如果以上条件满足,系统就会重置密码,这样看起来没有什么问题,也就是说,如果我们想要重置密码,就必须把验证码输入正确,验证码也只会往你填写的手机号上发。

如何突破呢?我们思考一下,验证码是4位数纯数字,那么我们从0000-9999每次加一,肯定有一个验证码是正确的,那么他这里的逻辑漏洞就是,验证码可以被破解,验证码的时效性,足够让我们从000-9999完全跑完,这样的话,就直接重置了

从零开始的业务逻辑漏洞挖掘

然后接下来我们输入正确的验证码就可以改密码了,如果你感觉不够逻辑的话,那么我们再博主实际挖掘中的一个案例,以下博主用两个账号来测试,模拟攻击者和被攻击者,攻击者的邮箱是我朋友的号,被攻击者的邮箱就是我自己的号

第一步,我们先输入被攻击者邮箱账号,获取验证码

从零开始的业务逻辑漏洞挖掘验证码发送成功,但是我们并不知道验证码是多少,因为验证码发送到了被攻击者的邮箱中去,接下来,我们等待一分钟,然后开启抓包,点击重新获取,接下来就会抓到一个这样的包,然后我们把email参数修改为攻击者的邮箱(下图为已经修改好了的),点击放包

从零开始的业务逻辑漏洞挖掘然后攻击者的邮箱收到了验证码,博主这里就直接登录我朋友的邮箱,将两个验证码对比,我们发现两个邮箱里面的验证码是一模一样的

从零开始的业务逻辑漏洞挖掘然后填写获取到的验证码,就可以重置了。

Why?为什么会发生这样的事情,我们看一下这个业务系统的流程:

输入要重置的邮箱,发送验证码,生成Session验证Session,完成重置,这个过程似乎没什么问题,接下来我来解释一下

漏洞就出在了生成Session和验证Session这一步,当我们输入被攻击者账号的时候,第一次发送验证码他会生成被攻击者账号的Session,当我们点击再次发生的时候,因为这个Session已经存在了,所以就不会生成,会直接往指定的邮箱里面发生验证码,这里因为我们接收验证码的邮箱篡改了,服务端那边只是校验了Session,而没有校验接收的邮箱是否和Session是绑定关系,导致了第二次发送的验证码,会直接发送到攻击者的邮箱里面,这个逻辑上就存在了缺陷,如果他的逻辑是,验证Session和邮箱是否绑定,那么这样的情况也不发生了,或者根本不生成Session,只验证发信和要重置的邮箱,这样攻击者改成了自己的邮箱,那么要重置的邮箱也会跟着改变,这样就无法重置被攻击者的邮箱账号了。

看到这里,不知道你对业务逻辑漏洞是否有了初步的认识,如果你还是感觉太模糊,那么再看博主实际挖掘中的一个案例:

业务逻辑缺陷+CSRF劫持用户权限

这个漏洞蛮鸡肋的,只要是CSRF肯定也只是针对单人定向攻击,所以理所应当的给了一个低危,不过这个思路还是可以学习一下的

你瞧瞧,人家审核都这么说了,我也怪不好意思的,这个思路最初是由花茶安全团队的创始人——天堂空气发觉的,不过我感觉应该很多的大佬早就发现了这样的一个逻辑漏洞,怎么说也算是一个组合拳了吧

从零开始的业务逻辑漏洞挖掘

ok,不废话了,首先来到个人中心,有一个绑定邮箱(我是手机号注册的),然后输入自己的手机号获取验证码,输入验证码,点击确定绑定的时候抓包

从零开始的业务逻辑漏洞挖掘然后生成CSRF poc ,再把包丢掉,这样等于这个包没发出去,这样的话,我的账号理所应当的也没有绑定这个邮箱,然后打开poc地址,点击触发按钮,会发现,返回状态为1,1一般代表true,也就是说绑定成功了。

从零开始的业务逻辑漏洞挖掘然后就可以开始搞事情了,打开密码重置,然后让我们输入手机号或者邮箱重置密码,我们输入刚刚利用CSRF绑定的邮箱,然后获取验证码,输入验证码,输入新密码,确认重置,这样就重置了密码了,是不是看着有点懵,我下面就从攻击者的角度利用。

1.攻击者在自己的个人中心绑定邮箱,获得验证码,然后输入验证码的时候,抓包生成poc

2.攻击者将按钮设置为自动点击,并把poc放到网站服务器上面

3.攻击者诱导用户点击poc的链接,用户点击之后,用户的个人中心被绑定上攻击者的邮箱

4.攻击者通过自己的邮箱,获得验证码,重置用户的密码

这个过程是不是有点出乎意料,本来只是一个CSRF漏洞,没多大的危害,但是这样利用的话,就上升一个危害层面了。

这里网站的个人中心如果能把加上图形验证码,或者直接修复这个CSRF漏洞,也就不会发生这种情况了。

为什么鸡肋:

1,验证码的时效性只有半个小时,也就是说,用户要在攻击者获取验证码的半个小时内点击攻击者的恶意链接,否则这个漏洞就会失效

2. 只能针对单一用户,范围小

首先感谢你能把文章看到这里,就算再不懂,至少知道逻辑漏洞是个什么东西了吧,所以我最后再做一个总结,把你脑子里面乱糟糟的零散聚集一下,我感觉博主已经写的很详细了,那么我就在这里总结一下吧。

总结:

1.永远不要依赖别人的思路,然后遇到一个业务点就往上面套,那样挖洞只是靠运气,没有一点技术含量

2.要善于思考,仔细研究这个业务系统的处理流程,确认每个点都没有逻辑问题

3.挖到一个漏洞之后,如果感觉危害低,尝试思考下有没有别的辅助型漏洞(比如CSRF)可以打组合拳

4.如果感觉自己的挖洞逻辑太弱,多去乌云镜像网看看老前辈的漏洞案例,虽然老,但是思路很经典,英文阅读能力好,可以去Hackone看漏洞案例,比较骚的思路,但是要求基础掌握的很稳

5.不要沉迷于逻辑漏洞,多多注意信息泄露,xss,sql注入等漏洞,有的时候可以结合逻辑漏洞提升危害

6.不要刚学会就去挖大厂,否则你会自闭,新手推荐挖:漏洞盒子,补天公益厂商,小厂商挖熟练之后,就开始尝试挖大厂

7.挖洞一定要心细,每个链接。每个点都点开看一下,每点开一个,就要思考后台处理逻辑

8.最后一句话:“基础不牢,地动山摇”


者:T1h2ua,文章来源:https://www.t1h2ua.cn


点击上方,关注公众号

如文章对你有帮助,请支持点下“赞”“在看”

本文始发于微信公众号(HACK之道):从零开始的业务逻辑漏洞挖掘

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年2月18日00:30:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   从零开始的业务逻辑漏洞挖掘http://cn-sec.com/archives/267258.html

发表评论

匿名网友 填写信息