Burp Suite是一个无需安装软件,下载完成后,直接从命令行启用即可。但Burp Suite是用Java语言开发的,运行时依赖于JRE,需要提前Java可运行环境。如果没有配置Java环境或者不知道如何配置的童鞋请参考win7电脑上的Java环境配置 配置完Java环境之后,首先验证Java配置是否正确,如果输入iava -version 出现下图的结果,证明配置正确且已完成。
这时,你只要在cmd里执行java jar /your burpsuite path/burpSuite.jar即可启动Burp Suite,或者,你将BurpSuite的jar放入class path目录下,直接执行java -jar burpSuite.jar也可以启动。注意:your burpsuite path为你Burp Suite所在路径,burpSuite.jar文件名必须跟你下载的iar文件名称一致
Burp Suite代理工具是以拦截代理的方式,拦截所有通过代理的网络流量,如客户端的请求数据、服务器端的返回信息等·Burp Suite主要拦截http和https协议的流量,通过拦截,BurpSuite以中间人的方式,可以对客户端请求数据、服务端返回做各种处理,以达到安全评估测试的目的。
在日常工作中,我们最常用的web客户端就是的web浏览器,我们可以通过代理的设置,做到对web浏览器的流量拦截,并对经过Burp Suite代理的流量数据进行处理。
下面我们就分别看看IE、Firefox、Google Chrome下是如何配置Burp Suite代理的。
这里我是用的是下图版本,不过使用思路是一样的
在FireFox中,我们也要进行一些参数设置,才能将FireFox浏览器的通信流量,通过Burp Suite代理进行传输。详细的步骤如下:
1、启动FireFox浏览器,点击这里
2、点击新建代理服务器
3、添加新建的代理服务器
填写IP地址为127.0.0.1环回地址,端口号填8080,完成FireFox的代理。(Burp默认监听自身8080端口)
4、停止拦截放通之后可以访问http://burp测试
可以看到欢迎界面。
当然,FireFox浏览器中,可以添加FireFox的扩展组件,对代理服务器进行管理。例如FireX Proxy、Proxy Swither都是很好用的组件,感兴趣的读者可以自己下载试用一下。
其他路由器同样思路的代理服务器的配置。
Burp Proxy 是Burp Suite以用户驱动测试流程功能的核心,通过代理模式,可以让我们拦截查看、修改所有在客户端和服务端之间传输的数据。
本章主要讲述以下内容 :
BurpProxy的使用是一个循序渐进的过程,刚开始使用时,可能并不能很快就获取你所期望的结果,慢慢地当你熟悉了它的功能和使用方法,你就可以用它很好地对一个产品系统做安全能力评估。一般使用Burp Proxy时,大体涉及环节如下 :
默认情况下,Burp Proxy只拦截请求的消息,普通文件请求如CSS、jS、图片是不会被拦截的,你可以修改默认的拦截选项来拦截这些静态文件,当然,你也可以通过修改拦截的作用域、参数或者服务器端返回的关键字来控制Burp Proxy的消息拦截,这些在后面的章节中我们会进一步的学习。所有流经Burp Proxy的消息,都会在http history记录下来,我们可以通过历史选项卡,查看传输的数据内容,对交互的数据进行测试和验证。同时,对于拦截到的消息和历史消息,都可以通过右击弹出菜单,发送到Burp的其他组件,如Spider、ScannerRepeater、Intruder、Sequencer、 Decoder、Comparer、Extender,进行进一步的测试。如下图所示 :
Burp Proxy的拦截功能主要由Intercept选项卡中的Forward、Drop、Interception is on/offAction、Comment 以及Highlight构成,它们的功能分别是:
Highlight的功能与Comment功能有点类似,即对当前拦截的消息设置高亮,以便于其他的请求消息相区分。
除了Intercept中可以对通过Proxy的消息进行控制外,在可选项设置选项卡Options中也有很多的功能设置也可以对流经的消息进行控制和处理。
当我们打开可选项设置选项卡Options,从界面显示来看,主要包括以下几大板块 (涉及https的功能不包含在本章内容里,后面会一章专门叙述) :
客户端请求消息拦截是指拦截客户端发送到服务器端消息的相关配置选项,其界面如下:
主要包含拦截规则配置、错误消息自动修复、自动更新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相对应,就不在赘述,请参上一节的内容。
服务器返回消息修改是指自动修改服务器端返回消息的相关设置项。其界面如下:
一个选择项分别对应的功能是
通过服务器返回消息修改可选择项的设置,可以方便渗透测试人员在安全评估过程中突破原有的数据限制,更好、更快地检测服务器端的安全性。
此项配置主要用来自动替换请求消息和服务器端返回消息中的某些值和文本,它与前文的规则的不同之处还在于支持正则表达式语言。
当点击 (Add) 按钮时,在弹出的匹配或替换规则输入对话框中我们可以看到,它可以对请求和返回消息的消息头,消息体、请求参数名、请求参数值、请求的第一行进行匹配和替换。
其他配置项主要是杂项设置。其界面如下:
自上而下依次的功能是:
Burp Proxy的历史记录由HTTP历史和WebSockets历史两个部分组成。
HTTP历史界面由筛选过滤器、历史记录列表、消息详情3个部分组成。
当我们在某一条历史记录上单击,会在下方的消息详解块显示此条消息的文本详细信息。当我们在某条消息上双击,则会弹出此条消息的详细对话框。
我们可以点击对话框右上方的【Previous】、【Next】按钮,浏览上一条或下一条消息的内容,也可以修改Raw的请求参数,然后执行多种【Action】操作。
历史消息列表中主要包含请求序列号、请求协议和主机名、请求的方式、URL路径、请求参数、Cookie、是否用户编辑过消息、服务器端返回的HTTP状态码等信息。通过这些信息,我们可以对一次客户端与服务器端交互的HTTP消息详情做出准确的分析,同时,在下方的详情视图中,也提供基于正则表达式方式的匹配查找功能,更好的方便渗透测试人员查找消息体中的相关信息。
当我们在做产品系统的安全评估过程中,会在HTTP历史中保存了大量的日志记录,为了更友好的消息管理,Burp提供了筛选过滤器功能。当我们点击HTTP历史标签下发的Filter时,将弹出筛选过滤器界面。
按照过滤条件的不同,筛选过滤器划分出7个子板块,分别是
现在,我们再看看WebSockets历史选项的功能,从界面上我们可以看出,WebSockets历史所提供的功能和选项是HTTP历史的一个子集,只是因为采用的通信方式的不同,而被独立出来成为一个专门的视图。其功能的使用方式与HTTP历史雷同,此处就不在赘述。
通过本章的学习,你对Burp Suite的代理模式有了更深入的理解,知道了作为中间人的BurpProxy在消息拦截过程中,可以对请求消息、应答消息做多方面的修改,并可以把消息传递给Burp的其他组件做进一步的测试·同时,Burp Proxy的历史日志功能和多种筛选过滤器让我们在使用中,能快速地查找需要的数据和关键信息,这些,都极大地帮助你提高了工作效率。
HTTPS协议是为了数据传输安全的需要,在HTTP原有的基础上,加入了安全套接字层SSL协议,通过CA证书来验证服务器的身份,并对通信消息进行加密·基于HTTPS协议这些特性,我们在使用Burp Proxy代理时,需要增加更多的设置,才能拦截HTTPS的消息。
本章包含的主要内容有
我们都知道,在HTTPS通信过程中,一个很重要的介质是CA证书,下面就我们一起来看看Burp Suite中CA证书的安装。
一般来说,Burp Proxy代理过程中的CA主要分为如下几个步骤 (以win7下IE9为例)
当我们启动Burp Suite时,默认会监听本地回路地址的8080端口,除此之外,我们也可以在默认监听的基础上,根据我们自己的需求,对监听端口和地址等参数进行自由设置。特别是当我们测试非浏览器应用时,无法使用浏览器代理的方式去拦截客户端与服务器端通信的数据流量,这种情况下,我们会使用自己的Proxy监听设置,而不会使用默认设置。
Proxy监听设置
当我们在实际使用中,可能需要同时测试不同的应用程序时,我们可以通过设置不同的代理端口,来区分不同的应用程序,Proxy监听即提供这样的功能设置。点击图中的[Add] 按钮,会弹出Proxy监听设置对话框,里面有更丰富的设置,满足我们不同的测试需求。
Proxy监听设置主要包含3块功能:
Burp Target 组件主要包含站点地图、目标域、Target 工具三部分组成,他们帮助渗透测试人员更好地了解目标应用的整体状况、当前的工作涉及哪些目标域、分析可能存在的攻击面等信息,下面我们就分别来看看Burp Target的三个组成部分。
本章的主要内容有 :
Target Scope中作用域的定义比较宽泛,通常来说,当我们对某个产品进行渗透测试时,可以通过域名或者主机名去限制拦截内容,这里域名或主机名就是我们说的作用域;如果我们想限制得更为细粒度化,比如,你只想拦截login目录下的所有请求,这时我们也可以在此设置,此时,作用域就是目录·总体来说,Target Scope主要使用于下面几种场景中:
通过Target Scope 我们能方便地控制Burp 的拦截范围、操作对象,减少无效的噪音。在Target Scope的设置中,主要包含两部分功能:允许规则和去除规则。
其中允许规则顾名思义,即包含在此规则列表中的,视为操作允许、有效。如果此规则用于拦截,则请求消息匹配包含规则列表中的将会被拦截; 反之,请求消息匹配去除列表中的将不会被拦截。从上图的添加规则对话框中我们可以看出,规则主要由协议、域名或IP地址、端口、文件名4个部分组成,这就意味着我们可以从协议、域名或IP地址、端口、文件名4个维度去控制哪些消息出现在允许或去除在规则列表中。
当我们设置了Target Scope (默认全部为允许),使用Burp Proxy进行代理拦截,在渗透测试中通过浏览器代理浏览应用时,Burp会自动将浏览信息记录下来,包含每一个请求和应答的详细信息,保存在Target站点地图中。
下图所示站点地图为一次渗透测试中,通过浏览器浏览的历史记录在站点地图中的展现结果。
从图中我们可以看出,Site Map的左边为访问的URL,按照网站的层级和深度,树形展示整个应用系统的结构和关联其他域的url情况; 右边显示的是某一个url被访问的明细列表,共访问哪些ur,请求和应答内容分别是什么,都有着详实的记录。 基于左边的树形结构,我们可以选择某个分支,对指定的路径进行扫描和抓取。
除了加入 Target Scope外,从上图中,我们也可以看到,对于站点地图的分层,可以通过折叠和展开操作,更好的分析站点结构。
Target 工具的使用的使用主要包括以下部分 :
当我们手工获取站点地图时,需要遵循以下操作步骤 : 1.设置浏览器代理和Burp Proxy代理,并使之能正常工作。2.关闭Burp Proxy的拦截功能。3.手工览网页,这时,Target会自动记录站点地图信息 。 手工获取站点地图的方式有一个好处就是,我们可以根据自己的需要和分析,自主地控制访问内容,记录的信息比较准确。与自动抓取相比,则需要更长的时间,如果需要渗透测试的产品系统是大型的系统,则对于系统的功能点依次操作一遍所需要的精力和时间对渗透测试人员来说付出都是很大的。
站点比较是一个Burp提供给渗透测试人员对站点进行动态分析的利器,我们在比较帐号权限时经常使用到它。当我们登陆应用系统,使用不同的帐号,帐号本身在应用系统中被赋予了不同的权限,那么帐号所能访问的功能模块、内容、参数等都是不尽相同的,此时使用站点比较,能很好的帮助渗透测试人员区分出来。一般来说,主要有以下3种场景 : 1.同一个帐号,具有不同的权限,比较两次请求结果的差异。 2.两个不同的帐号,具有不同的权限,比较两次请求结果的差异。3.两个不同的帐号,具有相同的权限,比较两次请求结果的差异。
下面我们就一起来看看如何进行站点比较。
攻击面分析是Burp Suite 交互工具 (Engagement tools) 中的功能,这里我们先看看AnalyzeTarget使用,其他的功能会在高级使用相关章节讲述。