为什么白帽大佬热衷挖逻辑漏洞?(附案例解析)

渗透技巧 8个月前 admin
231 0 0
在i春秋的白帽专访专栏中,我们采访了很多圈内知名大佬,他们战绩不凡,赫赫有名,在各大SRC排行榜常年霸屏。

在采访的过程中,我们发现了一个“秘密”!

圈内“大佬”都爱

挖逻辑漏洞


为什么白帽大佬热衷挖逻辑漏洞?(附案例解析)

为什么大佬们都爱挖逻辑漏洞

为什么白帽大佬热衷挖逻辑漏洞?(附案例解析)

逻辑漏洞好挖

为什么白帽大佬热衷挖逻辑漏洞?(附案例解析)

漏洞赏金高

为什么白帽大佬热衷挖逻辑漏洞?(附案例解析)

另有隐情

为什么白帽大佬热衷挖逻辑漏洞?(附案例解析)


带着这个疑问,我们采访到了一名内部“知情者”,他向我们对比分析了逻辑漏洞的特点,逻辑漏洞的类型及不同类型的案例解析,对挖洞感兴趣的师傅们不要错过呦~

为什么白帽大佬热衷挖逻辑漏洞?(附案例解析)

YongYe


现在的安全设备都非常齐全,获取shell、内网横向变得越来越困难。写这篇文章的初衷是想跟大家分享几个经典案例,掌握案例中的思维方法,并学以致用,助你在挖洞路上收获更多的启示和成长。


为什么白帽大佬热衷挖逻辑漏洞?(附案例解析)

解析逻辑漏洞的特点


为什么需要关注逻辑漏洞?我直接拿shell不好吗?这里简单分析了逻辑漏洞获取数据与shell获取数据的区别,在获取不到shell或者测试时顺手打一下逻辑漏洞还是有价值的。

1.安全性:现在大型目标基本都强化了系统安全防护,拿下入口点的难度比较大。外网又设有CDN、WAF装置,内网又是蜜罐、流量监测、堡垒机等等。逻辑漏洞相比就比较隐蔽,控制好间隔、线程还有其他人给你做掩护。

2.精确性:即使拿到入口点,也不一定能找到数据库和核心网络。一般数据库都是分区单独隔离保护,打半天发现不是项目需求。而逻辑漏洞可以有选择地获取到我们需要的数据,这是优点也是缺点。

3.利用难度:内网数据库严格管理的情况还会做权限控制,每个用户一个库并不能上去就是sysadmin、root的情况。而逻辑漏洞的利用条件就相对较低,存在可利用漏洞的情况,想要的数据基本上都能获取。正常只需要一个普通账号就可以,并且实战后发现大部分接口还是不健全的。


常见的逻辑漏洞


接口漏洞:参数/数据遍历、未授权访问;

认证绕过:认证绕过、验证信息泄露/前端验证、重复注册;

账密找回:账密找回跳过验证、账密找回邮箱弱ID/弱验证码;

支付逻辑:金额修改、数量修改;

越权漏洞:垂直/横向越权、任意密码修改。

…………


案例简介


1.前两个案例讲述的主要是网站逻辑漏洞-功能点之间的组合利用,第三个案例讲述的是关键信息泄露,帮助我们绕过认证获取唯一标识,进而扩大战果。案例核心都是围绕着获取到唯一标识,或者获取正常的一个查询参数,再结合其它功能点利用获取的唯一标识获取其它信息进行讲解。

2.实战一定要了解目标各个功能的业务处理逻辑、关键数据包中有价值的信息,从而方便我们进行逻辑的组合。因为一些原因都是画的图进行讲解展示,学习理解其中唯一标识的获取逻辑、功能点组合逻辑。

3.漏洞看着挺简单实际也不难,但是为什么别人能找到你却不能?挖不到的同学可以想一想这个问题。这也是本篇文章表达的另一个核心思想。


案例分享


Readme:各种阶段遇到问题写的Tips,提供的都是常规解决思路。逻辑漏洞,需要根据具体情况发挥。

案例1

说明:这个案例主要是利用不同功能点泄露的参数进行组合,获取到唯一标识再遍历唯一标识的过程。实战可能不仅限于案例中一、两个功能点。

介绍:网站发现以下功能点可进行结合:

1.功能点一:咨询登记,正常测试填写信息提交咨询申请看看是否会返回当前咨询信息的唯一标识。

为什么白帽大佬热衷挖逻辑漏洞?(附案例解析)

Tips:看到这个页面提交这么多信息,我们的目的就很明确了,就需要围绕下面的问题去做后续工作。

(1)如何查看其它用户提交的咨询信息,是否脱敏?

(2)当前咨询记录的唯一标识是什么?在哪里?是多少?id?uid?…….

2.功能点二:查看咨询,通过邮箱获取code进行登录可以查看咨询记录。这时我们可以尝试认证绕过,修改响应信息、code=0000/1111等等方式。

为什么白帽大佬热衷挖逻辑漏洞?(附案例解析)

3.通过提交咨询的Email登录,发送code到邮箱进入后台如下。这里并没有发现我们提交的信息,只有一个ID。记录下来继续测试其它的。

为什么白帽大佬热衷挖逻辑漏洞?(附案例解析)

Tips:

(1)这时可以通过code邮件的邮件头进行信息搜集,获取以下发送源地址(存在CDN有几率通过此方法获取真实IP)、中专节点IP、是否第三方中专等等信息;

(2)邮件如果返回有链接的可以看看链接中的唯一标识是否存在弱加密/双向加密/无加密等情况。

4.这里点击修改咨询,发现了提交的咨询信息,再观察URL发现了咨询信息唯一标识(如果URL没有返回唯一标识,那需要抓包看一下整个流程的处理逻辑,这个咨询信息是从哪里返回,不可能凭空出现吧)。到这里已经成功一半了,剩下一半需要判断唯一标识bagid是否有加密?是否可解?是否存在规律?

为什么白帽大佬热衷挖逻辑漏洞?(附案例解析)

Tips1:部分情况可能跳转过来不一定是图中Setup1(步骤1),可能是Setup4(步骤4),这时需要尝试跳回Setup1。步骤的控制分为两种情况提供绕过思路:

(1)响应包

①响应包中直接返回步骤标识。如:setup=1、setup =2、setup =3。直接修改响应包setup=4  ==>setup=1进行绕过。

②响应包中返回相应步骤整个HTML页面,这种情况数据如果后续需要使用,极大可能会直接隐藏在HTML的hidden等隐藏/不显示标签中。如:<input type=“hidden”,idcrad=“001”>

(2)请求包

响应包中没有发现步骤标识。如响应包返回:demo1=true,demo2=flase类似的。那需要查看请求包中参数,根据情况判断参数名的大概含义、是否有价值。去JS文件搜索这个参数,查看关联JS代码,再修改步骤控制部分代码或响应参数、法制数据包等进行绕过。

为什么白帽大佬热衷挖逻辑漏洞?(附案例解析)

Tips2:很多时候第一眼看到这个bagid是没有规律的,或者很麻烦(每个位置大小写有26+26+10种情况,枚举需要时间太久)就跳过了。实际我们还得实践、尝试才行。

5.一个bagid不太好判断规律,那再同时提交了几个咨询信息查看一下bagid。返回如下:

OfcFXzX6、OfcFXzXx、OfcFXzyx、OfcFczX5、OfcFCzX7

看起来是毫无规律?下一个?

这时别慌先验证一下是否有规律,如果是随机的基本就下一个了。(这里我是先手工判断,再上工具的)

(1)先随机替换几个字符如:a->b、c->d,响应:500。再替换最后一位数字:2->3、3->4发现可行!成功看到了别人的咨询信息。

(2)再按数字顺序(12345)替换几个判断一下是不是连续的,而不是随机的。发现数字0-7是存在的,后面可能还没有人提交信息所以可能(8-9)不存在,暂时可以判断是连续的、有规律的。

(3)知道数字有顺序,其它bagid怎么最后一位还存在字母?这时候直接Burp枚举大小写字母+数字。就可以知道最后一位有哪些字符存在数据,倒数第二位一样操作。

后续发现倒数第二位存在规律,字母间相隔一个字母并且一大写一小写循环。这个规律写在这里表达的意义是:利用撞库思路,这里发现的规律可以尝试套在其它字符位置。即时没用也可以记录,后续其它功能点可能会存在相同的规律。不断测试同时也不断地信息搜集、不断的利用已知信息去攻击。

最后一位:xxxx01…67、倒数第二位:AcEgIk……

为什么白帽大佬热衷挖逻辑漏洞?(附案例解析)

Tips:Bigid如果不连续/没有规律,会导致遍历量比较大、遍历不精准目标内存占用高,容易被发现等。这里总结了两个方法判断是否存在规律:

方法1:

数据包复用/正常+无痕模式,同时提交两个申请,再查看返回的bagId是否连续/存在规律。

方法2:

(1)手工Fuzz其中一两个值,如: 

bagId=OfcFXzX6

bagId=OfcFXzX7 (数字)

bagId=OfcFYzY6 (连续字母)

bagId=OfcFXZx6 (大小写)

正常人写代码的逻辑,我们从后往前fuzz容易成功,前面一般为类,后面为具体ID。

(2)Burp半自动模块:/intruder/Brute forcer

6.后续一直Burl半自动化就行了,就这样一直反推可以获得每个位置值的大部分规律。这时属于发现战果,我们需要尝试将战果扩大而不是直接满意的结束了。扩大战果思路根据情况判断,我这里是反过来从前往后再多次测试,只要尝试的足够多,获得的规律肯定是越全。

Burp完整尝试顺序:
OfcFXzX6=>OfcFXzX6=>OfcFXzX6=>OfcFXzX6=>OfcFXzX6………..最后再反过来走几遍

总结:这个案例主打的就是一个细心,网站一般很多功能的话,就要看你怎么发现、怎么进行组合。如果看见bagid使用md5等加密就差不多可以下一个了,这个组合最后发现获取不了太多信息,也可以获取记录下来,对进一步操作也会有帮助,毕竟真实的信息总比法制的更真实,跟内网一样不断获取信息,利用已知信息进行攻击。

案例2

相比案例1区别是:这个案例是同一个目标、不同域名、不同业务系统之间的漏洞进行逻辑上的组合利用。实战需要考虑的是发现很多系统的很多逻辑漏洞。单个漏洞都是无关痛痒,如何扩大/转化战果、如何将其中的漏洞连接起来才有价值。

介绍:

1.首先是通过注入获取到PASS进入后台。

2.后台中进入A系统,A系统中某功能点发现数据包id参数为唯一标识,可遍历id获取关键信息A-Number。但是只有一个A-Number并无用处,先记录。

3.后台进入B系统,B系统可以查询自己的详细信息(通过登录返回的B-Number查询。我也没有别人密码,这里就无法获取到其它的C-Number、D-Number等)。这时结合A系统漏洞,抓包发现了其中一个数据包可以修改B系统查询参数B-Number为A-Number就可以横向越权查询。

Tips:这里因为我了解了A、B系统其中的业务逻辑,知道返回的A-Number是什么含义与作用,B系统中去寻找方法将B-Number改为A-Number而达到我的目的。(我是功能点抓包发现B-Number可控直接更改,如果没有发现。那需要从其它技术/功能或者系统考虑。如:可以尝试查看登录验证逻辑是否存在B-Number的可控点、或者当前用户唯一标识可控点等)

案例3

这个案例是关键信息隐藏在源代码,通过隐藏的关键信息进行认证获取到正常的查询数据包以及唯一标识。然后通过正常查询数据包绕过认证遍历其中的唯一标识获取信息。

介绍:

1.网站存在如下功能页,查看别人的咨询记录需要验证邮箱号。

为什么白帽大佬热衷挖逻辑漏洞?(附案例解析)这?邮箱号咋能爆破出来?

这时候就对进入这个页面整个流程抓包,逐个分析。结果发现其中一个数据包返回一大串神秘的JSON代码,不是{“kfc”:”v50”}。对这个json进行分析后,发现直接把每个bagid对应邮箱等返回来了?

Tips:

1.本来是想看是否存在SQL查询参数的,遇到这种动态展示页面考虑到肯定需要查询才能展示实时的一个记录信息,我们可以全流程抓包看看哪个包什么参数控制进行的查询,参数是否存在过滤。

2.后续就是全流程抓包,通过输入邮箱验证过后查看详细的咨询信息。这里全流程抓包的意义也是去了解目标这个位置的认证验证逻辑和信息查询逻辑。是认证通过直接返回查询信息,还是认证过后携带key进行查询等。

3.数据包分析完发现是携带ID查询,ID通过认证后返回。(这时判断一下ID参数加密?可控?鉴权?)。我这里直接法制ID的值查询就可以了。

这里的流程逻辑简化如下:

数据包1:输入bagid+邮箱 => 响应包1:验证通过返回id  => 数据包2:携带id查询详细信息。

Tips:

(1)一个网站数据包那么多,不能所有的都完全分析到但这种关键功能点的数据包是很有分析的价值。这个案例就是一个关键信息泄露导致的更多的、更完整的信息泄露,主要还是需要细心。

(2)这个案例后续跟案例一类似,不过这里ID参数遍历难度更高。扩大战果的手法基本一致就不再描述了。

为什么白帽大佬热衷挖逻辑漏洞?(附案例解析)

通过上述几个案例的解析,相信大家对逻辑漏洞挖掘有了一些思路:

首先,一定要心,耐心

其次,逻辑漏洞需要大家发散思维,对漏洞多分析,了解目标业务逻辑,多思考。

最后,要掌握一个目标多个不同逻辑漏洞之间的组合利用

当然,仅仅掌握理论知识是远远不够的。如果你想成为一名出类拔萃的白帽专家,想要在SRC排行榜名列前茅,想要在圈内获得广泛的认可并取得卓越战绩,就必须进行实战演练。春秋云测平台可以为你提供实操机会,测试项目多,响应速度快,奖金丰厚。在这里,你不仅能够提升自己的技能,还能结识行业内的顶尖大佬,获取更多的机会和资源。

为什么白帽大佬热衷挖逻辑漏洞?(附案例解析)

春秋云测集结i春秋上万名安全社区技术精英的能力,会不定期上线测试项目,只有完成注册才能随时接收项目动态。加入春秋云测平台,开启你的挖洞之旅吧!

为什么白帽大佬热衷挖逻辑漏洞?(附案例解析)

(平台入口)
为什么白帽大佬热衷挖逻辑漏洞?(附案例解析)
为什么白帽大佬热衷挖逻辑漏洞?(附案例解析)

戳这里,进入春秋云测平台

原文始发于微信公众号(i春秋):为什么白帽大佬热衷挖逻辑漏洞?(附案例解析)

版权声明:admin 发表于 2023年8月22日 下午6:03。
转载请注明:为什么白帽大佬热衷挖逻辑漏洞?(附案例解析) | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...