burp suite使用指南
设置代理(proxy)
什么是代理
一般情况下我们访问网站,是直接与服务器交换数据包,这种情况下,我们的IP是直接暴露给服务器的,那么如果我们不想要服务器知道我们的真实ip地址呢,代理服务器应运而生。
设置代理,实际上就是设置代理服务器,让其作为我们访问网络资源的中转站,网络代理依赖应用层信息,所以本机会先与代理服务器三次握手建立连接,再发生具体的请求报文给代理服务器,代理服务器再跟目标服务器建立三次握手连接,代理服务器代替主机来访问目标服务器。

代理作用:
-
突破自身IP访问限制,访问一些平时不能访问的站点。
-
访问一些单位或团体内部资源:比如使用教育网内地址段免费代理服务器,就可以用于对教育网开放的各类FTP下载上传,以及各类资料查询共享等服务。
-
提高访问速度:通常代理服务器都设置一个较大的硬盘缓冲区,当有外界的信息通过时,同时也将其保存到缓冲区中,当其他用户再访问相同的信息时,则直接由缓冲区中取出信息,传给用户,以提高访问速度。
-
隐藏真实IP:上网者也可以通过这种方法隐藏自己的IP,免受攻击。对于爬虫来说,我们用代理就是为了隐藏自身IP,防止自身的IP被封锁。
而我们使用的工具就是设置本地代理,起到我们访问网络中转站的作用。
设置为burp suite代理
burp suite代理工具是以设置代理的方式,拦截所有通过代理的网络流量,包括客户端的请求数据、服务端的返回信息等。burp suite主要拦截HTTP和https协议的流量,通过拦截,burp以中间人的方式,对客户端发送的流量和服务端返回的数据包进行各种处理,以达到测试目的。
我们最常使用的web客户端就是web浏览器,我们可以通过设置代理信息,拦截浏览器的数据包,并对被burp代理拦截的数据包进行处理。
burp默认的本地代理端口为8080

浏览器端设置
浏览器是自带代理服务器功能的,这为我们抓包提供了方便的条件。以火狐浏览器为例:
设置->常规->网络设置->设置->手动配置代理


如果要抓http的包,就用http代理,如果要抓https的包就用https的代理。
tip:
https和http的区别:在传输层tcp和应用层http中间多添加了一层SSL层,作为加密手段。
输入burp suite的代理路径,本地host地址127.0.0.1,端口号8080即可。
但是,通常情况下burp默认只抓HTTP的包,HTTPS因为含有证书,因而无法正常抓取,抓HTTPS数据包就需要设置可信证书。
https的代理
以火狐浏览器为例(不同浏览器操作不同)
在安装burp的CA证书之前要确保burp suite的监听端口处于开启且火狐浏览器是在前文所说的设置的代理服务器的模式下工作。
在burp suite处于开启的状态下,在火狐浏览器中访问http://burpsuite,然后就会出现如下界面

点击CA Certificate下载并保存

选择火狐浏览器设置中的隐私与安全选项卡,下滑页面找到查看证书并点击

选择证书颁发机构->导入

选择我们刚刚下载的证书

勾选信任此证书颁发机构来表示网站,点击确定。

现在burp suite就可以抓取https的包了。
抓包后的操作
在抓到包后,即burp suite拦截到数据包后,其对数据包进行操作的模块主要在intercept选项卡中,包括
-
Forward(放包):表示将拦截并修改后的数据包
-
Drop(丢弃包):表示丢弃当前拦截的数据包
-
Intercept is on:表示开启/关闭拦截功能
-
Action(行动):点击后可以将数据包进一步发送到Spider、scanner、Repeater、Intruder等功能组件做进一步测试,还有改变数据包请求方式以及编码功能等。
-
Open Browser:打开已经开启代理功能的浏览器。
在burp suite拦截到数据包后,我们可以在消息分析选项中查看这这个数据包的实体内容、消息头、请求参数等信息,包括如下部分
-
Raw :主要显示web请求的raw格式,以纯文本的形式显示数据包,包含请求地址、Http协议版本、cookie、主机头、用户浏览器信息、字符集、编码方式、Accept可接受的内容类型,同时,这些信息是可以修改的。
-
Params:主要显示请求的参数信息,包括GET或者POST请求的参数、cookie参数。通过修改这些参数完成对服务器的渗透测试。
-
Header:显示数据包中的头信息
-
Hex:对应raw中的二进制内容,同样可以修改。
SwitchyOmega
为了避免在抓包前后需要反复到浏览器的设置中修改代理,除了直接使用burp suite内置的在上文提到的open browser按钮,还有一个特别好用的插件----SwitchyOmega,各大浏览器插件商店均可搜索下载安装。
本插件可以一键设置代理模式或是退出代理。
基本设置
下载安装完成后,选择选项,选择proxy选项卡,填写咱们的本地代理服务器,也就是burp suite监听的端口。
在抓包时点proxy按钮启动本地代理即可

在不抓包正常使用时就点击系统代理按钮或者直接连接按钮就可以。

Target
可按照不同url分类,显示目标应用程序即所有通过代理服务器请求的资源的详细信息。
Site map选项卡
Site map会以树形和表形显示所有通过代理服务器得到的资源,并且可以查看完整的请求和响应。最左边的树视图是包含内容的层级表示。以地址、目录、文件和参数化请求的URL再细分。选择树中的一个或多个部分,其所有分支的子项目会显示在表视图(Contents)中。
在该表视图中,其列名包括主机(Host)、请求方式(Method)、网址(URL)、参数(Params)、HTTP状态码(Status)、数据包长度(Length)、MIME类型(MIME type即多媒体文件格式,通俗来说,就是内容在浏览器的的显示格式)、标题(Title)、自己添加的备注(Comment)和收发时间(Time requested)。选择表中的一个项目,可以查看详细信息,即请求和回复数据包的详细内容,邮件该项目可将数据包传送给其他模块做进一步测试。

还可以在host列选择高亮部分

还有就是左边的树形视图中有一部分是黑的,另一部分是灰色的,黑色的部分是真正发生过通信过程的;而灰色的则是潜在的,经过爬网爬出的。
最右边两个模块Issues和Advisory暂时不太了解,等我了解了再来补充。
Scope选项卡
这么多的数据包有时候看得眼花缭乱,分不清哪些是想要的哪些是不想要的,所有这里有一些可以更方便我们阅读的选项。
Scope中我们可以添加想要操作或是不想看到的数据包的url前缀

可配合过滤器Filter一起使用,点击红框处

出现如下图所示过滤器设置

其过滤选项有
-
只显示范围内的项目
-
只显示真正发生过访问请求(requested)的项目
-
只显示有参数的请求
-
按关键字筛选
-
按mime type筛选
-
按文件拓展名筛选
-
按HTTP状态码筛选
-
只显示高亮的项目
-
只显示有注释项目
Scanner(Spider)
貌似在现在的高版本burp suite中已经没有spider模块,但是仍可以对目标网络应用程序的内容和功能进行全面的清查。取而代之的是对目标进行全面具体扫描的scanner,我将在下面这篇文章中对该模块进行详解。
https://www.cnblogs.com/Samforrest/articles/15781278.html
Intruder(入侵)
这是啥?
burp intruder是一个很强大的用于对web应用程序自定义攻击的工具,其特性为高度可配置,在很大范围内用于自动化攻击,包括但不局限完成以下攻击任务:
-
标识符枚举
-
SQL注入
-
跨站脚本攻击
-
路径遍历操纵参数
-
会话令牌测序和会话劫持
-
数据挖掘
-
并发攻击
-
应用层拒绝服务式攻击
Target(目标)选项卡
将任一数据包发送到intruder里,我们首先需明确攻击目标,如下图,将截获的百度搜索的数据包发送到intruder里,可知攻击目标主机地址是www.baidu.com,端口443(https)

Positions(位置)选项卡
配置在攻击里产生的所有http请求的模板
首先明确burp intruder的工作模式。burp intruder会先在指定位置作出标记(也就是先写出模板),然后运用我们指定的规则(payload)对目标字段的值作出替换,该替换可能是一次性的,也可能是有规则的,运用字典的多次自动化替换,再发送给服务器端。
burp suite使用一对'§'来标记指定位置,一对标记就有选择性地将模板请求中地一些文本包含在他们中间,被标记的位置我们将要放置有效载荷(payload)的位置。当标记位置被分配了Payload时,标记中间包含地文本都将被Payload替换。但是当标记位置没有被分配Payload时,标记将会被移除,其中间包含的文本将会保持不变。当数据包从其他模块传送过来时,intruder会猜测有可能想要放置有效载荷的位置,并设置相应的标记。标记之间的文本会突出显示。如下图文本框内的红框就是两个可能放置有效载荷位置。

而在文本框右侧的按钮是可对模板中标记进行各种操作的按钮。
-
Add § :在指针所指向位置添加一个标记 §
-
Clear § :清除模板中所有的标记 §
-
Auto § :在选择的文本中放置软件自己猜测的有可能的位置标记,如果没有选择文本,那么就会在整个文本放置标记。适合快速模糊化定位,但对于更自定义需要更加精准的位置标记则自己手动添加更好。
-
Refresh:清空整个模板
而在文本框上方则是选择攻击类型(Attack type)
-
sniper(精准狙击模式):使用一组payload。以每个位置为目标,依次将每个payload放置到该位置,多个标记依次进行。
-
Battering ram(攻城锤模式):使用一组payload。同时将多个被标注的位置替换。比如cookie中的用户名和body参数,就需要在请求中的多个位置插入相同的参数。
-
Pitchfork(草叉模式):使用多个payload集。对于每个定义的位置有不同的payload(最多二十个)。当攻击者需要在多个标记位置输入不同但相关的输入时。
-
Cluster bomb(集束炸弹模式):使用多个payload集合。对于每个标记的位置有不同的有效负载集合来替换(最多二十个),每个有效负载集合里包含各种关键字。攻击会依次遍历每个payload集合,以便测试payload组合的所有排列。当攻击者需要在请求的多个位置插入不同的、不相关的或未知的输入。
Payloads(有效载荷选项卡)
Options选项卡
Repeater
Decoder

浙公网安备 33010602011771号