Burp Intruder是用来自动化攻击Web应用程序的工具,且攻击可配置。
能暴力猜测Web目录、主动利用盲SQL注入漏洞等。
攻击原理:从别的模块接收HTTP请求,每次攻击必须指定一到多组payload和payload在请求中的的位置,攻击时发送修改过的每个版本的请求并分析应用程序的响应。
目录
Target
此选项用来配置目标服务器信息
Host:目标服务器的IP地址或主机名
Port:服务的端口号,80端口对应web服务
Use HTTPS:是否应该使用TLS
https相较于http更加安全,相当于在http通信的基础上加上了一个安全管道.
http请求从其他模块发过来时,Target是自动配置好的,可以直接跳过配置。
Positions
中间的区域是请求模板,每一个版本的攻击请求都是在请求模板的基础上修改的,请求模板上要定义payload的位置(两个§中间 )这是在修改请求时payload要被放入的位置。
Add§:在光标位置插入一个§或用两个§包围所选文本
Clear§ :清除选中文本中所有的§,如果未选中任何文本则清除模板中所有的§。
Auto§:自动在整个模块或所选文本添加payload位置,更多时候还是需要自己手动定义位置。
Refresh:官方文档给的解释是如有必要,将刷新请求模板编辑器的语法着色。
四种攻击类型:
Sniper:
将一组攻击载荷分别在每一个位置上逐个放入单个payload测试,比如字典里有五个payload,在请求模板上定义了两个payload位置,在修改时会把这五个payload分别放入第一个位置,再分别放入第二个位置,最后产生十个版本的请求。
Battering ram:
遍历一组有效载荷,在所有定义的位置上放入同一个载荷。同样是五个payload,两个位置,那一共会有五个版本的修改请求,每个版本的请求的两个位置上是同样的payload。
Pitchfofrk:
使用多组有效载荷,每个定义的位置使用一组不同的有效载荷。举个例子,两个位置、两组攻击载荷分别有5个payload,第一次攻击将第一组的第一个payload放入与第一组对应的位置,将第二组第一个payload放入与第二组对应的位置;第二次攻击将第一组第二个payload放入相应位置,将第二组第二个payload放入对应位置。没错,就是一共五个版本,五次攻击。
Cluster bomb:
同样使用多组有效载荷,每个定义的位置使用一组不同的有效载荷。与Pitchfofrk不同的是,攻击时,第一个位置放入第一组的第一个payload然后在第二个位置遍历第二组中所有的payload,然后第一个位置再放入第一组的第二个payload,第二个位置同样再遍历一次第二组的所有payload,一直下去,一共发起了5*5=25次攻击请求。
Payloads
Payloads用来配置一到多组有效载荷,数量取决于Positions中的攻击类型,如果攻击类型是Sniper或Battering ram,下图的Payload set只能选择一组。
Payload Sets
Payload set:几组有效载荷,也就是有效载荷集的数量。
Payload type:有效载荷类型,可以在不同情况下快速生成有效载荷,有时我们上传的字典还不能当作有效载荷,需要根据上传的字典、有效载荷类型和配置自动生成有效载荷。类型太多,官方文档:Payload types - PortSwigger
Payload options
Paste:粘贴,如果你复制了内容,点击Paste的时候会自动添加到列表里。
Load:在这里可以上传自己收集的或下载的字典
remove:移除选中payload
Clear:清空整个列表
Add:在后面输入payload自己添加
最下面的下拉菜单是可以选择工具自带的字典,比如有A到Z的、可能用到的密码字典,就可以不用自己添加payload了。
Payload Processing
这里是对上传的有效载荷处理的地方比如可以添加编码处理,如果没处理那在Payload Options里添加的有效载荷就是最终用作攻击的有效载荷,如果这里配置了有效载荷的处理,经过处理后的有效载荷就是最终的有效载荷。
左侧Remove是移除选中的处理,UpDown上移和下移,Edit编辑选中的处理规则,这样就不用移除再添加了。
Add添加处理规则,下拉菜单有很多处理。官方文档:Payload processing - PortSwigger
Payload Encoding
在处理完有效载荷准备最终进行HTTP传输攻击时,这个选项规定了payload里的哪些字符会被URL编码,这不是有效载荷处理规则 。
Options
Request Headers
这两个都默认勾选上就行。
UPdate content-Length header是必选的,因为payload的长度是变化的,所以勾选上这个选项更新或添加每一次请求的content-Length请求头,否则就是错误的请求。
Set Connection:close为请求更新或添加请求头Connection值为close,这是为了避免和服务器进行长连接,在得到一次响应后就自动关闭连接,因为还有好多版本的请求等着呢,这样可以加快攻击速度。
Request Engine
Number of threads:线程数,控制攻击时的并发请求数,线程数越大,攻击时间越短。
Number of retries on network failure:网络故障重试次数,偶尔出现连接错误或一些网络故障,这次请求就会放弃并且重新尝试请求,重试次数在这里设置。
Pause before retry:承接Number of retries on network failure,一般重试时不会立刻重试立刻重试大概率也会出错,都会等一定时间再重试。这里设置等待时间以毫秒为单位。
Fixed:设置一个固定的时间固定延迟(以毫秒为单位),这个时间是每个请求发送之间的时间间隔(延迟),可避免应用程序过载。
#Variable:可变延迟,第一个框是起始值,第二个框是增量。
#Start time:Immediately立即开始攻击,In 10 minutes:10分钟后开始攻击,Paused暂停状态下开始攻击(暂停状态不太懂)。
Attack Results
这里设置捕获攻击结果中的哪些信息
Store requests/reponses,临时占用磁盘空间在攻击期间可以查看每次请求和响应报文。
Make unmodified baseline request:会将未经修改的模板请求也发送,以便和攻击响应作比较。如果不勾选发送的请求都是修改过的请求。
Use...使用拒绝服务攻击:发送请求后就立刻关闭TCP连接不等待响应,以便快速向服务器发送大量请求。
Store full payloads:
Grep-Match
在返回来的多个响应报文中,如果想快速找到自己感兴趣的报文,比如想找有flag的报文,而flag的格式一般都有一对{}所以将“{}”添加到列表里,然后在攻击结果中多出一列{},在这一列可以快速找到有flag的报文。
左侧按钮同上
Match type:指定表达式是简单字符串还是正则表达式
Case sensitive match:指定表达式的检查是否区分大小写
Exclude HTTP headers:这里设置检查时是否排除HTTP响应头
Grep-Extract
从响应中提取有用的信息到攻击结果表中
上半部分是当前配置,下半部分是示例响应(点击Fetch response),如果入侵者模块是空那示例响应没东西,必须将前三个选项也就是Target、Positions、和Payloads配置好才会出现示例响应。
Define start and end:此选项定义提取项目的起点和终点
Extract from regrx effectively:提取匹配正则表达式的内容
Start aftere xpression:在要提取的项目之前定义一个表达式(可以用转义字符表示非打印字符),比如输入\n那提取的内容从第一个换行符后一个字符开始提取。
End at delimiter:在要提取的项目之后定义一个表达式,比如输入\n那提取出来的项目在报文中的下一个字符一定是\n
Start at offset:在相应中指定一个固定的偏移量开始提取项目,比如我指定5,那提取的内容从响应报文第一个字符开始数五个从第六个字符开始提取项目
End at fixed length:规定提取项目的长度
附图:
Grep-Match和Grep-Extract再理解
Grep提取和匹配有点难理解,所以我用攻防世界的一个环境自己测试了一下
首先在Grep-Match中添加cyberpeace
在攻击结果中多出一列cyberpeace,内容是打勾或没打勾,打勾的就是在响应中有cyberpeace的
这里匹配类型我i用的是简单字符串,正则表达式可以自己尝试一下
下图的意思就是你要匹配的项目它前面是换行符后面也是换行符,所以就出现下面的情况。
看看攻击时的样子:
可以看到和Grep匹配的区别是新增加的结果列下面是匹配到的内容而不是有没有打对勾。
如果在Grep提取中加两列相同的抽取规则:
可以选中第一个From.....点击左侧的Duplicate就会复制一个一样的在列表中。
因为满足前后都是换行符的不只一个所以添加一列只能显示第一个符合提取规则的。
Grep-Payloads
官方解释:这些设置可用于标记包含已提交负载反射的结果项。如果启用该选项,Burp 将添加一个新的结果列,其中包含一个数字,指示在每个响应中找到有效负载的次数。如果使用了多个有效载荷集,将为每个有效载荷集添加一个单独的列。
一开始没理解后来自己试了一下:
注意到password C rs在响应报文中都有对应字符。
原来是在响应报文中有和对应请求报文中的payload一样的字符
上面的四个选项第一个打勾表示启用该功能,第二个是否区分大小写,第三个是否排除HTTP头部信息。
Match against pre-URL-encoded payloads:payload在被发送时被URL编码,选择此项与未编码时匹配与检查响应。
Redirections
这些设置控制 Burp 在执行攻击时如何处理重定向。通常需要遵循重定向来实现攻击目标。例如,在密码猜测攻击中,每次尝试的结果可能只能通过重定向来显示。模糊测试时,相关反馈可能仅出现在初始重定向响应后返回的错误消息中。
Process cookies in redirections:如果选择此选项,则在遵循重定向目标时将重新提交在重定向响应中设置的任何 cookie。例如,如果您尝试对登录质询进行暴力破解,该登录质询始终返回到指示登录结果的页面的重定向,并且会创建一个新会话以响应每次登录尝试,则此选项可能是必要的。