[Burp Suite完整教程] Intruder Attack type和Payloads – 拥有上千种姿态...

共 4409字,需浏览 9分钟

 ·

2021-04-07 10:20

d56a8624110b64b0e3de5a11618ac337.webp



前言:经过一个多月的寻找,我换了个新的地方搬砖,虽然同样是测试相关的工作,但是差别蛮大的;目前主要从事的是安全领域产品的相关测试工作。非常大的挑战,全新的开始。


ecb3839c7454491343ef7a7c054c8d4c.webp

今天要介绍Intruder中的Attack typePayloads,Intruder可以进行的攻击与测试组合方式真的不少,有时候不是Intruder办不到,而是你不知道原来Intruder可以办得到。08a1f52131391f05c8ab3bd2b219de1c.webp首先是Positions下的Attack type,总共有四种的攻击模式,分别为 sniper(狙击枪)、Battering ram(攻城槌)、Pitchfork(干草叉)、cluster bomb(集束炸弹)

为了方便说明,我将登录部分的账号与密码皆设为变量,初始值账号我用admin,密码password0000。如下图的设定:04ebb22a670b82a46751a68ad0bebab7.webp

Attack Mode

1、Sniper(狙击枪)

第一种攻击模式: Sniper

sniper的特点是只需要指定一个Payload Set,不管你Positions中有几个变数,都是一个Payload Set, 但会针对每个变数逐项的替换。在替换第一个位置变量的时候,第二个是不会动的,也就是替换第一个位置的时候,第二个会是原始值,而测试完第一个位置时,才会测试二个位置。所以假设尝试替换账号密码,利用Payload内容是11,22,33,aa,bb,cc。进行暴力破解时,会去尝试: 

admin:11 

admin:22 

admin:33 

admin:aa 

admin:bb 

admin:cc 

11:password0000 

22:password0000… 这样依序下去。

字段中Position的意思是表示第几个变量,因为我们只有设定两个, 账号§admin§就是position 1,而密码§password0000§就是position 2。demo如下图:f7af914b56e74e47624af8750a5b4256.webp

2e34a53106c3ff171f2ae8a8fc62d8ad.webp在这里插入图片描述

2、Battering ram(攻城槌)

第二种攻击模式: Battering ram

这种攻击模式实际上比第一种还好理解,也是不管你Positions中有几个变数,都是一个Payload Set。并且每个变量位置的值都会是一样的。所以假设尝试替换账号密码,账号内容是11,22,33,aa,bb,cc 进行暴力破解时,会去尝试 11:11 22:22 33:33 aa:aa… 这样依序下去 demo如下图:17caede5b8bece6ff54b7324622dee0c.webpdabc2d1817b973135a82bc2435fca8a4.webp

3、Pitchfork(干草叉)

第三种攻击模式: Pitchfork

不能只输入一个字典,每个变量要有自己的字典文件,也就是说每个变量有一个属于自己的Payload set,但是要注意的是每个Payload set里面的payload个数要一样。(当然其实payload set不一样也是没关系,还是可以执行,只是多出来的那些payload不会被送出去而已。) 

假设两个Position各有自己的Payload Set, Position 1,也就是账号的地方,Payload是11, 22, 33 

Position 2,也就是密码的地方,Payload是aa,bb,cc 尝试结果会是

11:aa 

22:bb 

33:cc 

demo如下图:f78126ec23b0d4c3bbfa0236addc5390.webpe787629fc0ab5a571fd75321801e3a6d.webp7b283833559ff0178a9eebe9962a4f39.webp

4、Cluster bomb(集束炸弹)

第四种攻击模式: Cluster bomb

这种方式也是每个变量都要输入字典,但是不会像Pitchfork是一对一的关系,而是每个都会去尝试到,逐项地去尝试一多对的方式。

假设两个Position各有自己的Payload Set, Position 1,也就是账号的地方,Payload是11,22,33 

Position 2,也就是密码的地方,Payload是aa,bb,cc 尝试结果会是 

11:aa 

11:bb 

11:cc 

22:aa 

22:bb … 

demo如下图:9aa544e175f220e616b9c031c14a6f5e.webpec2f3644b49bb20c5b643d57d4f5b4b7.webpcc802e754da82447043cb1f1e1cef4cf.webpfa40f889d5db7ce787ff869dd7211ad8.webp

Payload type

介绍完了四种Attack Mode之后,要来提的就是Payload type,虽然我们前面用的Payload type都是Simple list,(实际上最常用的也是Simple list)。不过Burp所支持的Payload type可是相当的多样化。0de9c3ca870bfc80a2bd9fed2742c7c0.webp361e48c6d2e460e70fd703929c0967ab.webp

Simple list

首先Simple list可以算是最基本的,用法很简单,可以直接输入按Add,也可以上传文档。虽然这边我们demo都是手动输入,不过实际上要执行暴力破解等动作,通常Payload一定会是很大量的,用手输入可能会累死,所以实际上都是用选择上传文件的方式。

那至于字典文件要去哪里找,就…自己到处随便用关键词找找,因为多地方都有各种不同的字典的或是Payload文档。 谈起Payload与字典文件可能又会无限发散,这边就随便放个SecLists让大家参考参考: https://github.com/danielmiessler/SecLists/tree/master/Passwords

Runtime file

Runtime file 是指定文档,让你直接选择文档,每一行就是一个Payload,其实这个跟Simple list直接Load就是一样的意思而已,只是Simple list如果汇入的文档很大,会因为画面要显示出来给你看,所以会跑很久,Runtime file没有要显示给你看,所以没这个问题。5cdb85950c891bd8d0fa376ac9dfb0d4.webp

Custom iterator

Custom iterator这个稍微就有点小复杂了,首先先注意到这边里面也有个Position 1~8 8个都可以输入不同的Payload Set,也就是说八个之间会去做排列组合,但是前后的顺序不会改变, 最后的结果 = position1 + position2 + position3。为了方便demo,用的是Battering ram攻击模式,Payload的Position:

Position 1: 11,22,33 

Position 2: aa,bb,cc 

Position 3: dog,cat

最后执行的payload会是: 

11aadog 

22aadog 

33aadog 

11bbdog 

22bbdog … 以此类推总共18组payload:a10949e5746faaf457274e8802d25a68.webp23832a375dafbccf41e1578da3f840a0.webp179c880c29e121570d382a58e0919e34.webp552ff149e4dc2103b1232b9689731267.webp1302ea663201adb908981254238b5990.webp

Character substitution

Character substitution 字符替换的意思,也就是你可以设定把某个字符修改成另一个字符,其实可以算还是会从原本Simple list去延伸,所以看到item的地方跟Simple list一样。跑完原本的Payload之后会做字符的替换。所以假设我的payload输入abcd,可以看到字符替换的规则有a->4,b->8;所以暴力破解时送完原始的payload abcd之后。有单独把a换成4,有单独把b换成8,也有两个都换的。cb9c7135b7afb6d22df15e66ad0950f2.webpb6271c6198617b3ee6dbc4af22457437.webp49ef0b892687fd3007907cdb55aa7fe7.webp

Recursive grep

Recursive grep 其实听起来有点复杂,但是其实没那么复杂XD 可是我没好的范例demo。是从上一次的响应结果中,取得部分特定内容作为下次请求的Payload。

Illegal Unicode

这个我也是第一次发现原来Burp还有这一招,利用Illegal Unicode进行Bypass。因为不是很理解,让我先默默跳过…

Character blocks

Character blocks,举例,可以插入很多个A,起始要几个,每次增加多少个A,到多少个要停止,通常比较适用在测试overflow。558c2738374bb9167716fbd482a5421a.webpe110a83b7dc368860afdc3c2662618d9.webp7c26a9b33d9a582a9da35ad1485789a9.webp

Number

Number测试数字,这个也算是实际工作上很常用到的,可以设定起始多少到结尾多少,间隔多少数字, 也可以选择十进制与Hex,还有是否要小数点。b960b3c4bf06f74eff9c5eeb68273985.webp5bfc29f3687da3ccd55301d24066ed6f.webp

Datas

如其名,就是用来测时间日期格式的Payload。b18b7f3830ec582edfbde18296abcf10.webp

Brute Force

Brute Force是纯粹的暴力破解,这个其实算是我除了Simple与Number以外,可能比较常用到的之一,Payload的产生方式就是Character set中的所有字符排列组合都会试过,那也可以设定最小的长度与最大的长度,不过要注意就是Brute Force很容易一不小心Payload数量就超多的。01bbce9afb86c487c655e28a877ac6a1.webp

Null payloads

Null payloads 其实就是重复同样的原始请求,没有进行修改,你可能会好奇这样有什么意义?!那这个就是等到你遇到需要的场景就会知道意义了,通常可能是做观察与搜集数据的时候用,比如要确认一直重复发起一样的请求,是否服务器都会给一样的响应。

Character frobber

Character frobber 会按照顺序去递增每个字符的一个ASCII,感觉这个有点冷门,好像其实是满实用的,用途主要应该是用来确认token的每个字符是否有作用。

Username generator

用户名生成。

ECB block shuffler

牵扯到加密模式 剩下的因为时间压力的关系,加上我根本几乎没用过的关系XD 就真的草率的带过一下了: Bit flipper 会对预设的payload,按照bits去翻转。Username generator 对单字进行变形猜测。ECB block shuffler 牵扯到加密模式,先不管他。


讲完Payload type之后,Payload下还有两个区块,必须要提一下,姑且不管你有没有要用的,至少先知道。

Payload Processing

也可以对发出去的Payload进行加工处理,例如可以加入前缀、后缀字符、只截取字符串的某一部分等;后缀常见的可能像是Email结尾的字符,比如@gmail.com之类的。可以利用match替换,可以反转,可以编码,许多方法可以选择。be84c43306549eefd42916c44b75eb0a.webp1a054502e20a4c56627b427367bc84e1.webp351aa6e428e90c28e1592fee22b7feb1.webp

Payload Encoding

最下面的Payload Encoding,这边则是勾选的话,Payload如果有match的characters就会进行URL-encode。c4c08d7c48995b67c803d9e7d708e51a.webp

学习小结: 最后小结一下,我自己觉得会比较常用的payload type是Simple List, Number, Brute Force,当然每种都有各自的优点与适合的场景,Burp支持了这么多种的Payloads type,不同的攻击模式,还可以对Payload进行加工,真的是很建议可以好好学好Burp Suite中的Intruder。

最后,我准备好了绿色版本的Burp Suite2020,可以到主页上传的资源中寻找资源下载即可。点击下方阅读原文即可获取。

文章合集

Selenium | Appium  | Jenkins  |  Jmeter 

软件测试方法汇总 Postman接口参数化 | 测试用例设计

视频教程

Selenium | Appium | Jenkins | Jmeter



END



觉得不错,可以“点赞”和“在看”,或者转发留言


精彩的内容要和朋友分享

浏览 109
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报