搜索
    Hi~登录注册
    查看: 272|回复: 3
    收起左侧

    致所有初入网络安全的新人-从零开始的业务逻辑漏洞挖掘

    [复制链接]

    30

    主题

    0

    精华

    15 小时

    在线时间

    新手上路

    Rank: 1

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


    什么是逻辑漏洞?


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


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


    HTTP协议原理(这个不用多说,挖逻辑漏洞就是要和HTTP打交道)
    服务端语言(了解语言的特性,可以让你理解,整个业务的数据流在后端是怎么处理的)
    Burp Suite工具的熟练使用 (如果你连这个工具都不知道的话,那么你就没必要往下看了)
    前端语言(了解前端语言,尤其是js,可以让你理解,当返回信息到浏览器的时候,浏览器是怎么一个过程)
    F12的使用(F12就是审查元素啦,火狐的话用Fire BUG插件,调到网络选项卡,用来查看数据流)
    Cookie与Session的理解(这个比较重要的一个了,不过学服务端语言中会学到,大部分逻辑漏洞都和Cooie和Session有关)
    这里博主就想不出了,如果还有的话,欢迎联系博主QQ来补充,接下来,我将分享如何挖掘逻辑漏洞


    如何挖掘逻辑漏洞:


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


    废话不多说,进入正题


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


    我们首先来到这个直播平台密码重置的地方,输入手机号,然后发送验证码
    QQ截图20190519195523.png
    这里我发现了一个问题,我收到的验证码是4位数,时效性这里我忘记了,反正时间是挺长的,这样的话,我们思考一下,他的业务逻辑是怎么样的


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


    如何突破呢?我们思考一下,验证码是4位数纯数字,那么我们从0000-9999每次加一,肯定有一个验证码是正确的,那么他这里的逻辑漏洞就是,验证码可以被破解,验证码的时效性,足够让我们从000-9999完全跑完,这样的话,就直接重置了
    QQ截图20190519195553.png
    然后接下来我们输入正确的验证码就可以改密码了,如果你感觉不够逻辑的话,那么我们再博主实际挖掘中的一个案例,以下博主用两个账号来测试,模拟攻击者和被攻击者,攻击者的邮箱是我朋友的号,被攻击者的邮箱就是我自己的号


    第一步,我们先输入被攻击者邮箱账号,获取验证码
    QQ截图20190519195624.png
    验证码发送成功,但是我们并不知道验证码是多少,因为验证码发送到了被攻击者的邮箱中去,接下来,我们等待一分钟,然后开启抓包,点击重新获取,接下来就会抓到一个这样的包,然后我们把email参数修改为攻击者的邮箱(下图为已经修改好了的),点击放包
    QQ截图20190519195651.png
    然后攻击者的邮箱收到了验证码,博主这里就直接登录我朋友的邮箱,将两个验证码对比,我们发现两个邮箱里面的验证码是一模一样的
    QQ截图20190519195733.png
    然后填写获取到的验证码,就可以重置了。


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


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


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


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


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


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


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






    ok,不废话了,首先来到个人中心,有一个绑定邮箱(我是手机号注册的),然后输入自己的手机号获取验证码,输入验证码,点击确定绑定的时候抓包
    QQ截图20190519195801.png
    然后生成CSRF poc ,再把包丢掉,这样等于这个包没发出去,这样的话,我的账号理所应当的也没有绑定这个邮箱,然后打开poc地址,点击触发按钮,会发现,返回状态为1,1一般代表true,也就是说绑定成功了。
    QQ截图20190519195827.png
    然后就可以开始搞事情了,打开密码重置,然后让我们输入手机号或者邮箱重置密码,我们输入刚刚利用CSRF绑定的邮箱,然后获取验证码,输入验证码,输入新密码,确认重置,这样就重置了密码了,是不是看着有点懵,我下面就从攻击者的角度利用。


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


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


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


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


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


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


    为什么鸡肋:


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


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


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


    总结:


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


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


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


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


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


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


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


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




    上一篇:Gopherus - 利用 SSRF 漏洞攻击内部服务的 gopher 链接生成工具
    下一篇:关于CVE-2019-0708
    回复

    使用道具 举报

    19

    主题

    0

    精华

    121 小时

    在线时间

    新手上路

    Rank: 1

    积分
    44
    发表于 2019-5-20 20:27:56 | 显示全部楼层
    楼主我想要中文版的BURP ,能给一下嘛
    回复 支持 反对

    使用道具 举报

    0

    主题

    0

    精华

    0 小时

    在线时间

    新手上路

    Rank: 1

    积分
    0
    发表于 2019-5-20 22:38:34 | 显示全部楼层
    看一看,多谢!
    回复 支持 反对

    使用道具 举报

    游客
    回复
    您需要登录后才可以回帖 登录 | 获取账号

    快速回复 返回顶部 返回列表