BurpSuite-Burp Proxy
![](https://img2020.cnblogs.com/blog/2012373/202011/2012373-20201108212513312-1588777023.png)
![](https://img2020.cnblogs.com/blog/2012373/202011/2012373-20201108213154316-1302044256.png)
5.当Burp Suite拦截的客户端和服务器交互之后,我们可以在Burp Suite的消息分析选项卡中查看这次请求的实体内容、消息头、请求参数等信息。消息分析选项试图主要包括以下四项:
(1)Raw这是视图主要显示web请求的raw格式,包括请求地址、http协议版本、主机头、浏览器信息、Accept可接收的内容类型、字符集、编码方式、cookie等。可以通过手工修改这些信息,对服务器端进行渗透测试。
(2)params这个视图主要显示客户端请求的参数信息、包括GET或者POST请求的参数、Cookie参数。渗透人员可以通过修改这些请求参数来完成对服务器端的渗透测试。
(3)headers这个视图显示的信息和Raw的信息类似,只不过在这个视图中展示的更直观、友好。
(4)Hex这个视图显示Raw的二进制内容,你可以通过hex编辑器对请求的内容进行修改。
默认情况下,Burp Proxy只拦截请求的消息,普通文件请求如css、js、图片是不会被拦截的,你可以修改默认的拦截选项来拦截这些静态文 件,当然,你也可以通过修改拦截的作用域、参数或者服务器端返回的关键字来控制Burp Proxy的消息拦截。所有流经Burp Proxy的消息,都会在http history记录下来, 我们可以通过历史选项卡,查看传输的数据内容,对交互的数据进行测试和验证。同时,对于拦截到的消息和历史消息,都可以通过右击弹出菜单,发送到Burp的其他组件,如Spider、Scanner、Repeater、Intruder、Sequencer、Decoder、Comparer、Extender,进行进一步的测试。如下图所示:
(一)、数据拦截与控制
Burp Proxy的拦截功能主要由Intercept选项卡中的Forward、Drop、Interception is on/off、Action、Comment 以及Highlight构成,它们的功能分别是:
Forward的功能是当你查看过消息或者重新编辑过消息之后, 点击此按钮,将发送消息至服务器端。
Drop的功能是你想丢失当前拦截的消息,不再forward到服务器端。
Interception is on表示拦截功能打开,拦截所有通过Burp Proxy的请求数据;
Interception is off表示拦截功能关闭,不再拦截通过Burp Proxy的所有请求数据。
Action的功能是除了将当前请求的消息传递到Spider、Scanner、Repeater、Intruder、Sequencer、Decoder、Comparer组件外,还可以做一些请求消息的修改,如改变GET或者POST请求方式、改变请求body的编码,同时也可以改变请求消息的拦截设置,如不再拦截此主机的消息、不再拦截此IP 地址的消息、不再拦截此种文件类型的消息、不再拦截此目录的消息,也可以指定针对此消息拦截它的服务器端返回消息。
Comment的功能是指对拦截的消息添加备注,在一次渗透测试中,你通常会遇到一连串的请求消息,为了便于区分,在某个关键的请求消息上,你可以添加备注信息。
Highlight的功能与Comment功能有点类似,即对当前拦截的消息设置高亮,以便于其他的请求消息相区分。
除了Intercept中可以对通过Proxy的消息进行控制外,在可选项设置选项卡Options中也有很多的功能设置也可以对流经的消息进行控制和处理。
(二)、可配置选项Options
当我们打开可选项设置选项卡Options,从界面显示来看,主要包括一下几大版块:
(1)客户端请求消息拦截
(2)服务器端返回消息拦截
(3)服务器返回消息修改
(4)正则表达式配置
(5)其他配置项
客户端请求消息拦截
客户端请求消息拦截是指拦截客户端发送到服务器端消息的相关配置选项,其界面如下:
主要包含拦截规则配置、错误消息自动修复、自动更新Content-Length 消息头三个部分。
1.如果intercept request based on the follow rules的checkbox被选中,则拦截所有符合勾选按钮下方列表中的请求规则的消息都将被拦截,拦截时,对规则的过滤是自上而下进行的。当然,我们可以根据自己的需求,通过【Up】和【Down】按钮,调节规则所在位置和排序。同时,我们可以点击【Add】添加一条规则,也可以选中一条规则,通过点击【Edit】进行编辑、点击【Remove】进行删除。当我们点击【Add】按钮时,会弹出规则添加的输入对话框,如下图:
拦截规则添加时,共包含4个输入项。Boolean opertor表示当前的规则与其他规则是与的方式(And)还是或的方式(Or)共存;Match type表示匹配类型,此处匹配类型可以基于域名、IP地址、协议、请求方 法、URL、文件类型、参数, cookies, 头部或者内容, 状态码, MIME 类型, HTML页面的title等。Match relationship表示此条规则是匹配还是不匹配Match condition输入的关键字。当我们输入这些信息, 点击【OK】按钮,则规则即被保存。
2.如果Automatically fix missing的checkbox被选中,则表示在一次消息传输中,Burp Suite会自动修复丢失或多余的新行。比如说,一条被修改过的请求消息,如果丢失了头部结束的空行,Burp Suite 会自动添加上;如果一次请求的消息体中,URl编码参数中包含任何新的换行,Burp Suite将会移除。此项功能在手工修改请求消息时,为了防止错误,有很好的保护效果。
3.如果Automatically update Content-Length的checkbox被选中,则当请求的消息被修改后,Content-Length消息头部也会自动被修改,替换为与之相对应的值。
服务器端返回消息拦截
服务器端返回消息拦截顾名思义是指拦截服务器端返回的消息的相关配置项,其界面如下:
它的功能主要包含intercept response based on the follow rules和Automatically update Content-Length header when the response edited两个选项,其功能分别与客户端请求消息拦截中的intercept request based on the follow rules 、 Automatically update Content-Length header when the request edited相对应。
服务器返回消息修改
服务器返回消息修改是指自动修改服务器端返回消息的相关设置项。其界面如下:
自上而下,每一个选项分别对应的功能是:
(1)显示form表单中隐藏字段
(2)高亮显示form表单中隐藏字段
(3)使form表单中的disable字段生效,变成可输入域
(4)移除输入域长度限制
(5)移动JavaScript验证
(6)移动所有的JavaScript
(7)移除
(8)转换https超链接为http链接
(9)移除所有cookie中的安全标志
通过服务器返回消息修改可选择项的设置,可以方便渗透测试人员在安全评估过程中突破原有的数据限制,更好、更快地检测服务器端的安全性。
正则表达式配置
此项配置主要用来自动替换请求消息和服务器端返回消息中的某些值和文本,它与前文的规则的不同之处还在于支持正则表达式语言。
当点击【Add】按钮时,在弹出的匹配或替换规则输入对话框中我们可以看到,它可以对请求和返回消息的消息头,消息体、请求参数名、请求参数值、请求的第一行进行匹配和替换。例如,当我们要替换所有返回消息中的邮箱地址为t0data@burpsuite.com时,可以参考下图的设置填写输入项并保存验证。
其他配置项
其他配置项主要是杂项设置。其界面如下:
自上而下依次的功能是
(1)指定使用HTTP/1.0协议与服务器进行通信 这项设置用于强制客户端采用HTTP/1.0协议与服务器进行通信,一般客户端使用的HTTP 协议版本依赖于客户端浏览器,但某些服务器或者应用,必须使用HTTP/1.0协议,此时可勾选此项
(2)指定使用HTTP/1.0协议反馈消息给客户端 目前所有的浏览器均支持HTTP/1.0协议和HTTP/1.1协议,强制指定HTTP/1.0协议主要用于显示浏览器的某些方面的特征,比如,阻止HTTP管道攻击。
(3)设置返回消息头中的“Connection:close” 可用于某些情况下的阻止HTTP管道攻击。
(4)请求消息头中脱掉Proxy-* 浏览器请求消息中,通常会携带代理服务器的相关信息,此选项主要用于清除消息头中的代理服务器信息。
(5)解压请求消息中的压缩文件 某些应用在与服务器端进行交互时,会压缩消息体,勾选此选项,则Burp Suite 会自动解压消息体
(6)解压返回消息中的压缩文件 大多数浏览器支持压缩的消息体,勾选此选项,则Burp Suite 会自动解压被服务器端压缩的消息体
(7)禁用http://burp
(8)允许通过DNS和主机名访问web接口 即允许通过域名或主机名访问Burp Suite
(9)不在浏览器中显示Burp Suite错误 在我们使用Burp Suite时,如果发生了Burp Suite自身的错误,会在浏览器中显示,如果勾选了此项,则不会在浏览器中显示此类错误。
(10)禁用日志到历史和网站地图中 此选项的作用是阻止记录日志到历史和网站地图,在某些情况下可能有用,比如说,通过上游服务器进行认证或者做正则表达式替换时,为了降低内存的消耗,减少日志的储存,你可以勾选此项。
(11)拦截功能开始设置
这个选项主要用来配置intercept功能的生效方式,分为总是生效、总是失效 、从上一次的Burp Suite中恢复设置3种方式。
(三)、历史记录History
Burp Proxy的历史记录由HTTP历史和WebSockets历史两个部分组成。
HTTP历史界面由筛选过滤器、历史记录列表、消息详情3个部分组成。
当我们在某一条历史记录上单击,会在下方的消息详解块显示此条消息的文本详细信息。当我们在某条消息上双击,则会弹出此条消息的详细对话框。
我们可以点击对话框右上方的【Previous】、【Next】按钮,浏览上一条或下一条消息的内容,也可以修改Raw的请求参数,然后执行多种【Action】操作。
历史消息列表中主要包含请求序列号、请求协议和主机名、请求的方式、URL路径、请求参数、Cookie、是否用户编辑过消息、服务器端返回的HTTP状态码等信息。通过这些信息,我们可以对一次客户端与服务器端交互的HTTP消息详情做出准确的分析,同时,在下方的详情视图中,也提供基于正则表达式方式的匹配查找功能,更好的方便渗透测试人员查找消息体中的相关信息。
当我们在做产品系统的安全评估过程中,会在HTTP历史中保存了大量的日志记录,为了更友好的消息管理,Burp提供了筛选过滤器功能。当我们点击HTTP历史标签下发的Filter时,将弹出筛选过滤器界面。
按照过滤条件的不同,筛选过滤器划分出7个子板块,分别是:
(1)按照请求类型过滤 你可以选择仅显示当前作用域的、仅显示有服务器端响应的和仅显示带有请求参数的消息。当你勾选“仅显示当前作用域”时,此作用域需要在Burp Target的Scope选项中进行配置。
(2)按照MIME类型过滤 你可以控制是否显示服务器端返回的不同的文件类型的消息,比如只显示HTML、css或者图片。此过滤器目前支持HTML、Script、XML、CSS、其他文本、图片、Flash、二进制文件 8种形式。
(3)按照服务器返回的HTTP状态码过滤 Burp根据服务器的状态码,按照2XX,3XX,4XX,5XX分别进行过滤。比如,如果你只想显示返回状态码为200的请求成功消息,则勾选2XX。
(4)按照查找条件过滤 此过滤器是针对服务器端返回的消息内容,与输入的关键字进行匹配,具体的匹配方式,你可以选择 1.正则表达式 2.大小写敏感 3.否定查找 3种方式的任何组合,前面两种匹配方式容易理解,第3种匹配方式是指与关键字匹配上的将不再显示。
(5)按照文件类型过滤 通过文件类型在过滤消息列表,这里有两个选择可供操作。一是仅仅显示哪些,另一个是不显示哪些。如果是仅仅显示哪些,在show only的输入框中填写显示的文件类型,同样, 如果不显示哪些文件类型,只要在hide的输入框中填写不需要显示的文件类型即可。
(6)按照注解过滤 此过滤器的功能是指,根据每一个消息拦截时候的备注或者是否高亮来作为筛选条件控制哪些消息在历史列表中显示。
(7)按照监听端口过滤 此过滤器通常使用于当我们在Proxy Listeners中多个监听端口时,仅仅显示某个监听端口通信的消息,一般情况下,我们很少用到。
从界面上我们可以看 出,WebSockets历史所提供的功能和选项是HTTP历史的一个子集,只是因为采用的通信方式的不同,而被独立出来成为一个专门的视图。其功能的使用方式与HTTP历史雷同,此处就不在赘述。
二、SSL和Proxy高级选项
HTTPS协议是为了数据传输安全的需要,在HTTP原有的基础上,加入了安全套接字层SSL协议,通过CA证书来验证服务器的身份,并对通信消息进行加密。基于HTTPS协议这些特性,我们在使用Burp Proxy代理时,需要增加更多的设置,才能拦截HTTPS的消息。
(一)、Proxy监听设置
当我们启动Burp Suite时,默认会监听本地回路地址的8080端口,除此之外,我们也可以在默认监听的基础上,根据我们自己的需求,对监听端口和地址等参数进行自由设置。特别是当我们测试非浏览器应用时,无法使用浏览器代理的方式去拦截客户端与服务器通信的数据流量,这种情况下,我们会使用自己的Proxy监听设置,而不会使用默认设置。
当我们在实际使用中,可能需要同时测试不同的应用程序时,我们可以通过设置不同的代理端口,来区分不同的应用程序,Proxy监听即提供这样的功能设置。点击图中的【Add】按钮,会弹出Proxy监听设置对话框,里面有更丰富的设置,满足我们不同的测试需求。
Proxy监听设置主要包含3块功能
1.端口和IP绑定设置Binding:绑定的端口port是指Burp Proxy代理服务监听的端口,绑定IP地址分仅本地回路、所有接口、指定地址三种模式,在渗透测试中,无论你选择哪种模式,你需要明白一点,当你选择的非本地回路IP地址时,同局域网内的其他电脑也可以访问你的监听地址。
2.请求处理Request :请求处理主要是用来控制接收到Burp Proxy监听端口的请求后,如何对请求进行处理的。
其具体配置可分为:主机名/域名的转发、端口的转发、强制使用SSL和隐形代理4个部分。
主机名/域名的转发:所有的请求会转发到指定的主机或域名上;
端口的转发:所有的请求都会转发到这个端口上;
强制使用SSL:设置此项后,则请求若是http协议,经过Burp Proxy代理后将转换为https协议;
隐形代理:主要是用于测试客户端应用或者是非浏览器代理方式的应用,当我们设置了此项并访问这些应用时,将通过非代理方式,直接连接Burp Proxy的监听端口。
3.SSL证书:这些设置控制呈现给SSL客户端的服务器SSL证书。可以解决使用拦截代理时出现的一些SSL问题:
(1)您可以消除您的浏览器的SSL警报,并需要建立SSL例外。其中,网页加载来自其他域的SSL保护的项目,可以确保这些正确的加载到浏览器,而不需要为每个域手动接受代理的SSL证书。
(2)可以与该拒绝无效的SSL证书连接到服务器胖客户机应用程序的工作。
它有以下选项可供设置:
(1)使用自签名证书(Use a self-signed certificate ) —— 一个简单的自签名SSL证书呈现给您的浏览器,它总是会导致SSL警告。
(2)生成每个主机的CA签名证书(Generate CA-signed per-host certificates)—— 这是默认选项。在安装时,Burp创造了一个独特的自签名的证书颁发机构(CA)证书,并将此计算机上使用。当你的浏览器发出的SSL连接指定主机,Burp生成该主机的SSL证 书,由CA证书签名。您可以安装Burp的CA证书作为浏览器中的受信任的根,从而使每个主机证书没有任何警报接受。
(3)生成与特定的主机名CA签发的证书(Generate a CA-signed certificate with a specific hostname)—— -是类似于前面的选项;不同的是,Burp会生成一个主机证书与每一个SSL连接使用,使用指定的主机名。
(4)使用自定义证书(Use a custom certificate)—— 此选项可以加载一个特定的证书(在PKCS#12格式)呈现给浏览器。如果应用程序使用这需要一个特定的服务器证书(例如,与给定的序列号或证书链)的客户端应该使用这个选项。
(二)、SSL直连和隐形代理
SSL直连的设置主要用于指定的目的服务器直接通过SSL连接,而通过这些连接的请求或响应任何细节将在Burp代理拦截视图或历史日志中可见。通过SSL连接传递可以并不是简单地消除在客户机上SSL错误的情况下有用。比如说,在执行SSL证书的移动应用。如果应用程序访问多个域,或使用HTTP和HTTPS连接的混合,然后通过SSL连接到特定的主机问题仍然使您能够以正常的方式使用Burp的其他方式进行通信。如果启用自动添加客户端SSL协商失败的选项,当客户端失败的SSL协议检测(例如,由于不承认Burp的CA证书),并会自动将相关的服务器添加到SSL直通通过列表中去。其设置界面如下图所示:
有时候,在拦截富客户端软件时,我们通常需要使用隐形代理。富客户端软件通常是指运行在浏览器之外的客户端软件,这就意味着它本身不具有HTTP代理是属性。当它进行网络通信时,客户端将无法使代理感知或者无法由代理进行通信。在Burp中,我们可以使用隐形代理的方 式,对通信内容进行代理或拦截,从而对通信的请求和响应消息进行分析。使用隐形代理通常需要做如下设置(以https://example.com为例):
1.配置hosts文件,Windows操作系统下的目录位置Windows/System32/drivers/etc/hosts,而Linux或者Unix下的目录
为/etc/hosts,添加如下行:
127.0.0.1 example.com
2..第一步设置完成之后,我们需要添加一个新的监听来运行在HTTP默认的80端口,如果通信流量使用HTTPS协议,则端口为443。
3.如果是HTTPS协议的通信方式,我们需要一个指定域名的CA证书。
4.接着,我们需要把Burp拦截的流量转发给原始请求的服务器。这需要在Options->Connections->Hostname Resolution 进行设置。因为我们已经告诉了操作系统,example.com的监听地址在127.0.0.1上,所以我们必须告诉Burp,将example.com的流量转发到真实的服务器那里去。
5.通过这样的配置,我们就可以欺骗富客户端软件,将流量发送到Burp
监听的端口上,再由Burp将流量转发给真实的服务器。