Intruder模块,通过它我们可以在短时间内向目标发送大量的请求,在渗透测试中我们想要枚举任何数据时都可以通过它去实现,下面主要讲Intruder的四种组合payload的模式以及18种payload类型(有几个我不熟练,所以没写)
下面是它几个板块的简单介绍
一般情况下,这里是不用设置的,因为Intruder模块的数据包一般是从其他模块发送过来的,最常见的就是用Proxy或者Repeater模块转发过来,如下图
上面已经把请求包转发过来了,所以我们这里是直接有内容的
Attack type,就是设置payload的组合类型的,它里面有四种
Sniper,可以设置多个替换范围,它会每个范围都用payload组去替换一次
就假如说我设置username和password两个点,然后payload有3个,那么它就会跑6次
username的值替换3次,这时候password的值是原始的
然后password的值替换3次,这时候username的值是原始的
这个建议自己去试一下,就明白了
Battering ram,它和Sniper的区别在于,Sniper一次只会替换一个payload的位置,而它你设置几个它就一起替换几个,也就是说上面那种情况的话,它只会跑3次
Pitchfork,它可以设置多个替换范围(最多20个),有多个替换范围就要设置多少个payload,在跑包的时候payload是一起对应着一行一行的来,跑多少次以payload最少的那组为准
例如说有三个设置payload的点,然后我三个payload集合内容如下
p1:1,2,3,4,5,6,7,8,9
p2:a,b,c,d,e,f,g,h,i,j,k,l,m,n
p3:!,@,#
那么在跑的时候它们的组合方式就是
1a!
2b@
3c#
结束,因为p3只有3个payloads
Cluster bomb,可以设置多个替换范围(最多20个),依次遍历所有Payloads,它和Pitchfork的区别就在于,它会把所有的payloads集合进行不同的组合,跑的次数是每个payload组中数据量的乘积
有2个paylaod
p1: 1,2,3
p2: a,b,c
组合的方式就是
1a,1b,1c,2a,2b,2c,3a,3c,3c
下面数据区域中,那些绿色背景的数据就是在进行枚举时,payload会替换的位置,Burpsuite用特殊的符号来固定它们的范围,我们可以使用Clear那个按键去清空所有设置的范围,然后在我们想要设置的开始范围按下Add键,找到结束的位置也按下Add键就可以设置好自己想要的范围,例如像下面这样
然后下一步就是要去设置payload,当payload设置好了之后就可以点Start attack开始攻击了
Simple list(简单列表)
这里面的payload集合可以自己输入,也可以从文件中读取,或者载入它预先准备好的一些payload集合,这个类型下对payload的组合比较自由
对于
add from list
这里面的一些集合我不是很看好,例如说用户名,密码,目录这些,因为我认为它这里面的内容可能会更符合外国人的口味,如果说你有一个好的字典,那么我还是建议用自己的
Runtime file(运行时加载文件)
先不加载文件,等开始攻击时,在读取文件内容,一行就是一个payload,记住路径中不能有中文,否则会报错
Custom iterator(自定义迭代器)
我们先看图,在这里我把一行payload比作一条字符串,那么自定义迭代器中它最多可以划分8个子串组,并且在Separator for position中指定当前子串组与下一条子串组之间的分隔方式,Preset schemes中是一些预定义的分隔方案
下面我来举个例子,假设我要跑一个数据,它的格式是
id:username@password
,那么我就可以设置三个payload
第一个设置一些id值,指定分隔符是:
第二个设置一些用户名,指定分隔符是@
第三个设置一些弱口令
运行结果
会跑多少次应该是,所有子串组的中子串的数量相乘
Character substiution(字符串替换)
从运行结果中我们可以发现,它是会去依次替换的
Case modification(大小写替换)
Recursive grep(递归匹配)
这个比较重要,它是可以从响应中提取数据来充当payload的,打个比方我们要对一个接口进行枚举,它有个token,这个token每一次请求都是不一样,响应中肯定是会携带这个token的,那么我们就可以从响应中获取token利用它来进行枚举
我这里的例子用的是DVWA这个靶场中的Brute Force关卡的高级(High)难度,可以看到参数中有user_token这项,下面演示怎么获取它
首先Proxy抓的包不要放,不然token就失效了,选中密码和token的值作为替换范围,攻击模式选择Pitchfork
看图操作
这里别忘了复制token的值,因为这里发起了请求之后,原来那个token值已经失效了
第一个Payload我随便设置了一些值,里面放了正确密码,然后第二个payload它会自己选定我们刚才搞出来的正则表达式,重点在于我们要把刚才复制的token填入Initial payload for first request这个框中
然后去设置线程池,为1个线程,因为我们是从响应里面获取内容的,所以它只能设置成一个线程
都弄好之后就可以开始攻击了,成功跑出结果
Illegal Unicode(不合法的Unicode编码)
这个有点难以理解,先放着
Character blocks(字符块)
指定一个字符,不停的增加它的长度,往数据包中填充垃圾数据,可以很方便的测试检测边界(例如绕WAF),或者缓冲区溢出
Numbers(数字类型)
如果在跑验证码的时候,假如验证码有4位,我们要从0跑到9999,为了让它从0001,0002这样的格式增长,我们可以限制它的最少和最多位数为4,小数位都为0,这样就OK了
Dates(日期型)
Brute focer(暴力字典)
Null payloads(无payload)
不用设置payload,设置一下跑多少次就好了
Character frobber
下面是运行结果
Bit flipper(bit反转)
Username generator(用户名生成)
这里面的payload集合的内容有两种格式(姓名/邮箱):
- firstname lastname
- firstname.lastname@example.org
它会根据payload的内容去不停的变更,具体的自己测试一下就知道了
ECB block shuffler(ECB加密块洗牌)
Extension-generated(扩展生成器)
配合扩展插件使用来生成payload
Copy other payload
这里面可以设置一些对payload进行加工的方法,例如对payload进行base64编码,或者MD5加密等操作
这里以对payload进行base64编码为例,点击add添加规则,然后选择Encode,找到Base64-encode然后点击确定
设置好了之后,直接点击start attack就OK了,可以看到我们的payload被编码了
它可以设置多个加工规则,然后优先级是从上往下的,例如下面这样,它就是先把payload进行base64编码,然后在进行md5加密
这个东西呢是设置一些特殊字符,如果这些字符出现在payload中了呢就会对它们进行url编码
如下图所示
用户名 | 金币 | 积分 | 时间 | 理由 |
---|---|---|---|---|
Track-劲夫 | 30.00 | 0 | 2021-12-28 14:02:12 | 活动奖励 |
Track-劲夫 | 60.00 | 0 | 2021-12-28 14:02:07 | 一个受益终生的帖子~~ |
打赏我,让我更有动力~
© 2016 - 2024 掌控者 All Rights Reserved.