Burp Suite 实战指南

第一部分 Burp Suite 基础
  1. Burp Suite 安装和环境配置
  2. Burp Suite代理和浏览器设置
  3. 如何使用Burp Suite 代理
  4. SSL和Proxy高级选项
  5. 如何使用Burp Target
  6. 如何使用Burp Spider
  7. 如何使用Burp Scanner
  8. 如何使用Burp Intruder
  9. 如何使用Burp Repeater
  10. 如何使用Burp Sequencer
  11. 如何使用Burp Decoder
  12. 如何使用Burp Comparer

第二部分 Burp Suite 高级

  1. 数据查找、提取以及正则表达式的使用
  2. Burp Suite拓展功能的使用
  3. Burp Suite应用商店插件的使用
  4. 如何编写本身的Burp Suite插件

第三部分 Burp Suite 综合使用

  1. 使用Burp Suite测试Web Services服务
  2. 使用Burp, Sqlmap进行自动化SQL注入渗透测试
  3. 使用Burp、PhantomJS进行XSS检测
  4. 使用Burp 、Radamsa进行浏览器fuzzing
  5. 使用Burp 、Android Killer进行安卓app渗透测试

第一章 Burp Suite 安装和环境配置

Burp Suite是一个集成化的渗透测试工具,它集合了多种渗透测试组件,使咱们自动化地或手工地能更好的完成对web应用的渗透测试和攻击。在渗透测试中,咱们使用Burp Suite将使得测试工做变得更加容易和方便,即便在不须要娴熟的技巧的状况下,只有咱们熟悉Burp Suite的使用,也使得渗透测试工做变得轻松和高效。css

Burp Suite是由Java语言编写而成,而Java自身的跨平台性,使得软件的学习和使用更加方便。Burp Suite不像其余的自动化测试工具,它须要你手工的去配置一些参数,触发一些自动化流程,而后它才会开始工做。html

Burp Suite可执行程序是java文件类型的jar文件,免费版的能够从免费版下载地址进行下载。免费版的Burp Suite会有许多限制,不少的高级工具没法使用,若是您想使用更多的高级功能,须要付费购买专业版。专业版与免费版的主要区别有 
前端

  1. Burp Scanner
  2. 工做空间的保存和恢复
  3. 拓展工具,如Target Analyzer, Content Discovery和 Task Scheduler

本章主要讲述Burp Suite的基本配置,包含以下内容: 
java

  • 如何从命令行启动Burp Suite
  • 如何设置JVM内存 大小
  • IPv6问题调试

如何从命令行启动Burp Suite

Burp Suite是一个无需安装软件,下载完成后,直接从命令行启用便可。但Burp Suite是用Java语言开发的,运行时依赖于JRE,须要提早Java可运行环境。若是没有配置Java环境或者不知道如何配置的童鞋请参考win7电脑上的Java环境配置
配置完Java环境以后,首先验证Java配置是否正确,若是输入java -version 出现下图的结果,证实配置正确且已完成。
java环境验证
这时,你只要在cmd里执行java -jar /your_burpsuite_path/burpSuite.jar便可启动Burp Suite,或者,你将Burp Suite的jar放入class_path目录下,直接执行java -jar burpSuite.jar也能够启动。git

注意:your_burpsuite_path为你Burp Suite所在路径,burpSuite.jar文件名必须跟你下载的jar文件名称一致github

如何设置JVM内存 大小

若是Java可运行环境配置正确的话,当你双击burpSuite.jar便可启动软件,这时,Burp Suite本身会自动分配最大的可用内存,具体实际分配了多少内存,默认通常为64M。当咱们在渗透测试过程,若是有成千上万个请求经过Burp Suite,这时就可能会致使Burp Suite因内存不足而崩溃,从而会丢失渗透测试过程当中的相关数据,这是咱们不但愿看到的。所以,当咱们启动Burp Suite时,一般会指定它使用的内存大小。
通常来讲,咱们一般会分配2G的内存供Burp Suite使用,若是你的电脑内存足够,能够分配4G;若是你的电脑内存足够小,你也能够分配128M。当你给Burp Suite分配足够多的内存时,它能作的工做也会更多。指定Burp Suite占用内存大小的具体配置方法是在启动脚本里添加以下命令行参数:
假设启动脚本的名称为burp_suite_start.bat,则该bat脚本的内容为web

java -jar -Xmx2048M  /your_burpsuite_path/burpsuite.jar

其中参数-Xmx指定JVM可用的最大内存,单位能够是M,也能够是G,若是是G为单位的话,则脚本内容为:正则表达式

java -jar -Xmx2G  /your_burpsuite_path/burpsuite.jar

更多关于JVM性能调优的知识请阅读 Oracle JVM Tuningchrome

IPv6问题调试

Burp Suite是不支持IPv6地址进行数据通讯的,这时在cmd控制台里就会抛出以下异常数据库

java.net.SocketException: Permission denied

同时,浏览器访问时,也会出现异常

Burp proxy error: Permission denied: connect

当出现如上问题时,咱们须要修改启动脚本,添加对IPv4的指定后,重启Burp Suite便可。

java -jar -Xmx2048M  -Djava.net.preferIPv4Stack=true  /your_burpsuite_path/burpsuite.jar

经过 -Djava.net.preferIPv4Stack=true参数的设置,告诉Java运行环境,使用IPv4协议栈进行数据通讯,IPv6协议将会被禁止使用。
这个错误最多见于64位的windows操做系统上,使用了32位的JDK


第二章 Burp Suite代理和浏览器设置

Burp Suite代理工具是以拦截代理的方式,拦截全部经过代理的网络流量,如客户端的请求数据、服务器端的返回信息等。Burp Suite主要拦截http和https协议的流量,经过拦截,Burp Suite以中间人的方式,能够对客户端请求数据、服务端返回作各类处理,以达到安全评估测试的目的。

在平常工做中,咱们最经常使用的web客户端就是的web浏览器,咱们能够经过代理的设置,作到对web浏览器的流量拦截,并对通过Burp Suite代理的流量数据进行处理。

下面咱们就分别看看IE、Firefox、Google Chrome下是如何配置Burp Suite代理的。

IE设置

当Burp Suite 启动以后,默认分配的代理地址和端口是127.0.0.1 :8080,咱们能够从Burp Suite的proxy选项卡的options上查看。如图:

如今,咱们经过以下步骤的设置便可完成IE经过Burp Suite 代理的相关配置。

  1. 启动IE浏览器
  2. 点击【工具】菜单,选择【Internet】选项
  3. 打开【链接】选项卡,点击【局域网设置】,进行代理设置。
  4. 在代理服务器设置的地址输入框中填写127.0.0.1,端口填写8080,点击【肯定】,完成代理服务器的设置。
  5. 这时,IE的设置已经完成,你能够访问 http://burp 将会看到Burp Suite的欢迎界面。

FireFox设置

与IE的设置相似,在FireFox中,咱们也要进行一些参数设置,才能将FireFox浏览器的通讯流量,经过Burp Suite代理进行传输。详细的步骤以下:

  1. 启动FireFox浏览器,点击【工具】菜单,点击【选项】。
  2. 在新打开的about:preferences#advanced窗口中,依次点击【高级】-【网络】,咱们将会看到FireFox链接网络的设置选项。
  3. 点击【设置】,在弹出的【链接设置】对话框中,找到“http代理”,填写127.0.0.1,端口填写8080,最后点击【确认】保存参数设置,完成FireFox的代理配置。

    固然,FireFox浏览器中,能够添加FireFox的扩展组件,对代理服务器进行管理。例如FireX Proxy、Proxy Swither都是很好用的组件,感兴趣的读者能够本身下载试用一下。

Google Chrome设置

Google Chrome使用Burp Suite做为代理服务器的配置步骤以下:

  1. 启动Google Chrome浏览器,在地址栏输入chrome://settings/,回车后即显示Google Chrome浏览器的配置界面
  2. 点击底部的【显示高级设置】,将显示Google Chrome浏览器的高级设置。
  3. 固然,你也能够直接在搜索框中输入“代理”,回车后将自动定位到代理服务器设置功能。
  4. 点击【更改代理服务器设置】,windows系统下将会弹出IE浏览器的代理设置,此时,按照IE浏览器的设置步骤,完成代理服务器的配置便可。

除了上述的三种经常使用的浏览器外,还有Safari浏览器也有很多的用户在使用,其代理配置请点击阅读进行查看。


第三章 如何使用Burp Suite代理

Burp Proxy 是Burp Suite以用户驱动测试流程功能的核心,经过代理模式,可让咱们拦截、查看、修改全部在客户端和服务端之间传输的数据。

本章主要讲述如下内容:

  • Burp Proxy基本使用
  • 数据拦截与控制
  • 可选项配置Options
  • 历史记录History

Burp Proxy基本使用

经过上一章的学习,咱们对Burp Suite代理模式和浏览器代理设置有了基本的了解。Burp Proxy的使用是一个按部就班的过程,刚开始使用时,可能并不能很快就获取你所指望的结果,慢慢地当你熟悉了它的功能和使用方法,你就能够用它很好地对一个产品系统作安全能力评估。
通常使用Burp Proxy时,大致涉及环节以下:

  1. 首先,确认JRE已经安装好,Burp Suite能够启动并正常运行,且已经完成浏览器的代理服务器配置。
  2. 打开Proxy功能中的Intercept选项卡,确认拦截功能为“Interception is on”状态,若是显示为“Intercept is off”则点击它,打开拦截功能。
  3. 打开浏览器,输入你须要访问的URL(以http://baike.baidu.com/为例)并回车,这时你将会看到数据流量通过Burp Proxy并暂停,直到你点击【Forward】,才会继续传输下去。若是你点击了【Drop】,则此次经过的数据将会被丢失,再也不继续处理。
  4. 当咱们点击【Forward】以后,咱们将看到此次请求返回的全部数据。
  5. 当Burp Suite拦截的客户端和服务器交互以后,咱们能够在Burp Suite的消息分析选项卡中查看此次请求的实体内容、消息头、请求参数等信息。消息分析选项视图主要包括如下四项:
  • Raw 这是视图主要显示web请求的raw格式,包含请求地址、http协议版本、主机头、浏览器信息、Accept可接受的内容类型、字符集、编码方式、cookie等。你能够经过手工修改这些信息,对服务器端进行渗透测试。
  • params 这个视图主要显示客户端请求的参数信息、包括GET或者POST请求的参数、Cookie参数。渗透人员能够经过修改这些请求参数来完成对服务器端的渗透测试。
  • headers 这个视图显示的信息和Raw的信息相似,只不过在这个视图中,展现得更直观、友好。
  • 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,从界面显示来看,主要包括如下几大板块(涉及https的功能不包含在本章内容里,后面会一章专门叙述):

  • 客户端请求消息拦截
  • 服务器端返回消息拦截
  • 服务器返回消息修改
  • 正则表达式配置
  • 其余配置项
客户端请求消息拦截

客户端请求消息拦截是指拦截客户端发送到服务器端消息的相关配置选项,其界面以下:

主要包含拦截规则配置、错误消息自动修复、自动更新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相对应,就不在赘述,请参上一节的内容。

服务器返回消息修改

服务器返回消息修改是指自动修改服务器端返回消息的相关设置项。其界面以下:

自上而下,每个选择项分别对应的功能是

  • 显示form表单中隐藏字段
  • 高亮显示form表单中隐藏字段
  • 使form表单中的disable字段生效,变成可输入域
  • 移除输入域长度限制
  • 移动JavaScript验证
  • 移动全部的JavaScript
  • 移除 <object>标签
  • 转换https超连接为http连接
  • 移除全部cookie中的安全标志

经过服务器返回消息修改可选择项的设置,能够方便渗透测试人员在安全评估过程当中突破原有的数据限制,更好、更快地检测服务器端的安全性。

正则表达式配置

此项配置主要用来自动替换请求消息和服务器端返回消息中的某些值和文本,它与前文的规则的不一样之处还在于支持正则表达式语言。

当点击【Add】按钮时,在弹出的匹配或替换规则输入对话框中咱们能够看到,它能够对请求和返回消息的消息头,消息体、请求参数名、请求参数值、请求的第一行进行匹配和替换。例如,当咱们要替换全部返回消息中的邮箱地址为t0data@burpsuite.com时,能够参考下图的设置填写输入项并保存验证。

其余配置项

其余配置项主要是杂项设置。其界面以下:

自上而下依次的功能是

  • 指定使用HTTP/1.0协议与服务器进行通讯
    这项设置用于强制客户端采用HTTP/1.0协议与服务器进行通讯,通常客户端使用的HTTP协议版本依赖于客户端浏览器,但某些服务器或者应用,必须使用HTTP/1.0协议,此时可勾选此项

  • 指定使用HTTP/1.0协议反馈消息给客户端
    目前全部的浏览器均支持HTTP/1.0协议和HTTP/1.1协议,强制指定HTTP/1.0协议主要用于显示浏览器的某些方面的特征,好比,阻止HTTP管道攻击。

  • 设置返回消息头中的“Connection:close”
    可用于某些状况下的阻止HTTP管道攻击。

  • 请求消息头中脱掉Proxy-*
    浏览器请求消息中,一般会携带代理服务器的相关信息,此选项主要用于清除消息头中的代理服务器信息。

  • 解压请求消息中的压缩文件
    某些应用在与服务器端进行交互时,会压缩消息体,勾选此选项,则Burp Suite 会自动解压消息体

  • 解压返回消息中的压缩文件
    大多数浏览器支持压缩的消息体,勾选此选项,则Burp Suite 会自动解压被服务器端压缩的消息体

  • 禁用http://burp

  • 容许经过DNS和主机名访问web接口
    即容许经过域名或主机名访问Burp Suite

  • 不在浏览器中显示Burp Suite错误
    在咱们使用Burp Suite时,若是发生了Burp Suite自身的错误,会在浏览器中显示,若是勾选了此项,则不会在浏览器中显示此类错误。

  • 禁用日志到历史和网站地图中
    此选项的做用是阻止记录日志到历史和网站地图,在某些状况下可能有用,好比说,经过上游服务器进行认证或者作正则表达式替换时,为了下降内存的消耗,减小日志的储存,你能够勾选此项。

  • 拦截功能开始设置
    这个选项主要用来配置intercept功能的生效方式,分为老是生效、 老是失效 、从上一次的Burp Suite中恢复设置3种方式。

历史记录History


Burp Proxy的历史记录由HTTP历史和WebSockets历史两个部分组成。

HTTP历史界面由筛选过滤器、历史记录列表、消息详情3个部分组成。

当咱们在某一条历史记录上单击,会在下方的消息详解块显示此条消息的文本详细信息。当咱们在某条消息上双击,则会弹出此条消息的详细对话框。

咱们能够点击对话框右上方的【Previous】、【Next】按钮,浏览上一条或下一条消息的内容,也能够修改Raw的请求参数,而后执行多种【Action】操做。

历史消息列表中主要包含请求序列号、请求协议和主机名、请求的方式、URL路径、请求参数、Cookie、是否用户编辑过消息、服务器端返回的HTTP状态码等信息。经过这些信息,咱们能够对一次客户端与服务器端交互的HTTP消息详情作出准确的分析,同时,在下方的详情视图中,也提供基于正则表达式方式的匹配查找功能,更好的方便渗透测试人员查找消息体中的相关信息。

当咱们在作产品系统的安全评估过程当中,会在HTTP历史中保存了大量的日志记录,为了更友好的消息管理,Burp提供了筛选过滤器功能。当咱们点击HTTP历史标签下发的Filter时,将弹出筛选过滤器界面。

按照过滤条件的不一样,筛选过滤器划分出7个子板块,分别是

  • 按照请求类型过滤
    你能够选择仅显示当前做用域的、仅显示有服务器端响应的和仅显示带有请求参数的消息。当你勾选“仅显示当前做用域”时,此做用域须要在Burp Target的Scope选项中进行配置,详细请阅读Burp Target相关章节。

  • 按照MIME类型过滤
    你能够控制是否显示服务器端返回的不一样的文件类型的消息,好比只显示HTML、css或者图片。此过滤器目前支持HTML、Script、XML、CSS、其余文本、图片、Flash、二进制文件 8种形式。

  • 按照服务器返回的HTTP状态码过滤
    Burp根据服务器的状态码,按照2XX,3XX,4XX,5XX分别进行过滤。好比,若是你只想显示返回状态码为200的请求成功消息,则勾选2XX。

  • 按照查找条件过滤
    此过滤器是针对服务器端返回的消息内容,与输入的关键字进行匹配,具体的匹配方式,你能够选择 1.正则表达式 2.大小写敏感 3.否认查找 3种方式的任何组合,前面两种匹配方式容易理解,第3种匹配方式是指与关键字匹配上的将再也不显示。

  • 按照文件类型过滤
    经过文件类型在过滤消息列表,这里有两个选择可供操做。一是仅仅显示哪些,另外一个是不显示哪些。若是是仅仅显示哪些,在show only的输入框中填写显示的文件类型,一样,若是不显示哪些文件类型,只要在hide的输入框中填写不须要显示的文件类型便可。

  • 按照注解过滤
    此过滤器的功能是指,根据每个消息拦截时候的备注或者是否高亮来做为筛选条件控制哪些消息在历史列表中显示。

  • 按照监听端口过滤
    此过滤器一般使用于当咱们在Proxy Listeners中多个监听端口时,仅仅显示某个监听端口通讯的消息,通常状况下,咱们不多用到。

如今,咱们再看看WebSockets历史选项的功能,从界面上咱们能够看出,WebSockets历史所提供的功能和选项是HTTP历史的一个子集,只是由于采用的通讯方式的不一样,而被独立出来成为一个专门的视图。其功能的使用方式与HTTP历史雷同,此处就不在赘述。

经过本章的学习,你对Burp Suite的代理模式有了更深刻的理解,知道了做为中间人的Burp Proxy在消息拦截过程当中,能够对请求消息、应答消息作多方面的修改,并能够把消息传递给Burp的其余组件作进一步的测试。同时,Burp Proxy的历史日志功能和多种筛选过滤器让咱们在使用中,能快速地查找须要的数据和关键信息,这些,都极大地帮助你提升了工做效率。

第四章 SSL和Proxy高级选项

在前一章,咱们已经学习了HTTP消息如何经过Burp Proxy进行拦截和处理,本章咱们将继续学习HTTPS协议消息的拦截和处理。

HTTPS协议是为了数据传输安全的须要,在HTTP原有的基础上,加入了安全套接字层SSL协议,经过CA证书来验证服务器的身份,并对通讯消息进行加密。基于HTTPS协议这些特性,咱们在使用Burp Proxy代理时,须要增长更多的设置,才能拦截HTTPS的消息。

本章包含的主要内容有

  • CA证书的安装
  • CA证书的卸载
  • Proxy监听设置
  • SSL直连和隐形代理设置

咱们都知道,在HTTPS通讯过程当中,一个很重要的介质是CA证书,下面就咱们一块儿来看看Burp Suite中CA证书的安装。

CA证书的安装

通常来讲,Burp Proxy代理过程当中的CA主要分为以下几个步骤(以win7下IE9为例):

  1. 首先,根据前三章内容的学习,你已配置好Burp Proxy监听端口和IE的代理服务器设置。其次,你的IE浏览器中没有安装过Burp Suite的CA证书,若是已经安装,请先卸载证书。详细的卸载方法请参考CA证书的卸载章节。
  2. 以管理员身份,启动IE浏览器,在地址栏输入http://burp并回车,进入证书下载页面
  3. 点击上图所示的证书下载,另存为到本地目录。
  4. 点击浏览器上的【工具】菜单,打开【Internet选项】。
  5. 在弹出的证书对话框中,点击【内容】-【证书】。
  6. 在弹出的证书对话框中,选中【受信任的根证书颁发机构】,点击【导入】。
  7. 点击【下一步】,选择步骤3保存的证书文件,进行下一步操做。
  8. 指定证书的存储位置,如图
  9. 点击【下一步】,直至完成。这时,会提示安全警告,点击【是】,提示导入完成。
  10. 关闭IE,重启浏览器,CA证书即配置完成。

CA证书的卸载


CA证书的卸载的一般有两种方式,第一种方式在上一章节CA证书安装中的第6步,找到须要卸载的证书,点击【删除】便可。咱们这里主要描述第二种删除方式,主要是为了解决在第一种方式的基础上删除按钮失效或者证书列表里看不到的证书也一块儿删除的方法。

  1. 首先,咱们打开cmd,输入mmc,或者你在运行输入框里直接输入mmc回车,会弹出管理控制台。
  2. 点击【文件】菜单,打开【添加/删除管理单元】
  3. 找到证书,以下图1,点击【添加】按钮,以下图2
  4. 在弹出的对话框中默认选中【我当前的用户】,点击【完成】,一直到结束,这是会在控制台跟节点下多了一个证书的节点。
  5. 打开CA证书所在的位置,选择删除便可。
  6. 这时,你再返回到IE浏览器的证书列表里,则不会再看到被删除的证书了。

除了IE以外,其余的浏览器如FireFox、Chrome、Sarifa等都证书的安装和卸载基本相似,操做时能够以IE的CA证书安装做为参考。

Proxy监听设置


当咱们启动Burp Suite时,默认会监听本地回路地址的8080端口,除此以外,咱们也能够在默认监听的基础上,根据咱们本身的需求,对监听端口和地址等参数进行自由设置。特别是当咱们测试非浏览器应用时,没法使用浏览器代理的方式去拦截客户端与服务器端通讯的数据流量,这种状况下,咱们会使用本身的Proxy监听设置,而不会使用默认设置。

  • Proxy监听设置


当咱们在实际使用中,可能须要同时测试不一样的应用程序时,咱们能够经过设置不一样的代理端口,来区分不一样的应用程序,Proxy监听即提供这样的功能设置。点击图中的【Add】按钮,会弹出Proxy监听设置对话框,里面有更丰富的设置,知足咱们不一样的测试需求。

Proxy监听设置主要包含3块功能:

  1. 端口和IP绑定设置Binding
    绑定的端口port是指Burp Proxy代理服务监听的端口,绑定IP地址分仅本地回路、全部接口、指定地址三种模式,在渗透测试中,不管你选择哪一种模式,你须要明白一点,当你选择的非本地回路IP地址时,同局域网内的其余电脑也能够访问你的监听地址。

  2. 请求处理Request Handling
    请求处理主要是用来控制接受到Burp Proxy监听端口的请求后,若是对请求进行处理的。

    其具体配置可分为:端口的转发、主机名/域名的转发、强制使用SSL和隐形代理4个部分。当咱们配置了端口的转发时,全部的请求都会被转发到这个端口上;若是咱们配置了主机或域名的转发,则全部的请求会转发到指定的主机或域名上。同时,咱们能够指定,经过Burp Proxy的消息是否强制使用SSL,若是设置了此项,则请求如果http协议,经Burp proxy代理后将转换为https协议。隐形代理主要是用于测试富客户端应用或者是非浏览器代理方式的应用,当咱们设置了它,访问这些应用时,将经过非代理的方式,直接链接Burp Proxy的监听端口。

  3. SSL 证书
    这些设置控制呈现给SSL客户端的服务器SSL证书。能够解决使用拦截代理时出现的一些SSL问题:
    1.您能够消除您的浏览器的SSL警报,并须要创建SSL例外。其中,网页加载来自其余域的SSL保护的项目,能够确保这些正确的加载到浏览器,而不须要为每一个域手动接受代理的SSL证书。
    2.能够与该拒绝无效的SSL证书链接到服务器胖客户机应用程序的工做。
    它有下列选项可供设置:

  • 使用自签名证书(Use a self-signed certificate ) —— 一个简单的自签名SSL证书呈现给您的浏览器,它老是会致使SSL警告。
  • 生成每一个主机的CA签名证书(Generate CA-signed per-host certificates)—— 这是默认选项。在安装时,Burp创造了一个独特的自签名的证书颁发机构(CA)证书,并将此计算机上使用。当你的浏览器发出的SSL链接指定主机,Burp生成该主机的SSL证书,由CA证书签名。您能够安装Burp的CA证书做为浏览器中的受信任的根,从而使每一个主机证书没有任何警报接受。
  • 生成与特定的主机名CA签发的证书(Generate a CA-signed certificate with a specific hostname)—— -是相似于前面的选项;不一样的是,Burp会生成一个主机证书与每个SSL链接使用,使用指定的主机名。
  • 使用自定义证书(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将流量转发给真实的服务器。


第五章 如何使用Burp Target

Burp Target 组件主要包含站点地图、目标域、Target 工具三部分组成,他们帮助渗透测试人员更好地了解目标应用的总体情况、当前的工做涉及哪些目标域、分析可能存在的攻击面等信息,下面咱们就分别来看看Burp Target的三个组成部分。

本章的主要内容有:

  • 目标域设置 Target Scope
  • 站点地图 Site Map
  • Target 工具的使用

目标域设置 Target Scope

Target Scope中做用域的定义比较宽泛,一般来讲,当咱们对某个产品进行渗透测试时,能够经过域名或者主机名去限制拦截内容,这里域名或主机名就是咱们说的做用域;若是咱们想限制得更为细粒度化,好比,你只想拦截login目录下的全部请求,这时咱们也能够在此设置,此时,做用域就是目录。整体来讲,Target Scope主要使用于下面几种场景中:

  • 限制站点地图和Proxy 历史中的显示结果
  • 告诉Burp Proxy 拦截哪些请求
  • Burp Spider抓取哪些内容
  • Burp Scanner自动扫描哪些做用域的安全漏洞8在Burp Intruder和Burp Repeater 中指定URL

经过Target Scope 咱们能方便地控制Burp 的拦截范围、操做对象,减小无效的噪音。在Target Scope的设置中,主要包含两部分功能:容许规则和去除规则。

其中容许规则顾名思义,即包含在此规则列表中的,视为操做容许、有效。若是此规则用于拦截,则请求消息匹配包含规则列表中的将会被拦截;反之,请求消息匹配去除列表中的将不会被拦截。

从上图的添加规则对话框中咱们能够看出,规则主要由协议、域名或IP地址、端口、文件名4个部分组成,这就意味着咱们能够从协议、域名或IP地址、端口、文件名4个维度去控制哪些消息出如今容许或去除在规则列表中。


当咱们设置了Target Scope (默认所有为容许),使用Burp Proxy进行代理拦截,在渗透测试中经过浏览器代理浏览应用时,Burp会自动将浏览信息记录下来,包含每个请求和应答的详细信息,保存在Target站点地图中。

站点地图 Site Map

下图所示站点地图为一次渗透测试中,经过浏览器浏览的历史记录在站点地图中的展示结果。

从图中咱们能够看出,Site Map的左边为访问的URL,按照网站的层级和深度,树形展现整个应用系统的结构和关联其余域的url状况;右边显示的是某一个url被访问的明细列表,共访问哪些url,请求和应答内容分别是什么,都有着详实的记录。
基于左边的树形结构,咱们能够选择某个分支,对指定的路径进行扫描和抓取。

同时,咱们也能够将某个域直接加入 Target Scope中.

除了加入 Target Scope外,从上图中,咱们也能够看到,对于站点地图的分层,能够经过折叠和展开操做,更好的分析站点结构。


Target 工具的使用

Target 工具的使用的使用主要包括如下部分:

  • 手工获取站点地图
  • 站点比较
  • 攻击面分析

当咱们手工获取站点地图时,须要遵循如下操做步骤:
1.设置浏览器代理和Burp Proxy代理,并使之能正常工做。
2.关闭Burp Proxy的拦截功能。
3.手工浏览网页,这时,Target会自动记录站点地图信息。
手工获取站点地图的方式有一个好处就是,咱们能够根据本身的须要和分析,自主地控制访问内容,记录的信息比较准确。与自动抓取相比,则须要更长的时间,若是须要渗透测试的产品系统是大型的系统,则对于系统的功能点依次操做一遍所须要的精力和时间对渗透测试人员来讲付出都是很大的。

站点比较是一个Burp提供给渗透测试人员对站点进行动态分析的利器,咱们在比较账号权限时常用到它。当咱们登录应用系统,使用不一样的账号,账号自己在应用系统中被赋予了不一样的权限,那么账号所能访问的功能模块、内容、参数等都是不尽相同的,此时使用站点比较,能很好的帮助渗透测试人员区分出来。通常来讲,主要有如下3种场景:
1.同一个账号,具备不一样的权限,比较两次请求结果的差别。
2.两个不一样的账号,具备不一样的权限,比较两次请求结果的差别。
3.两个不一样的账号,具备相同的权限,比较两次请求结果的差别。

下面咱们就一块儿来看看如何进行站点比较。
1.首先咱们在须要进行比较的功能连接上右击,找到站点比较的菜单,点击菜单进入下一步。

2.因为站点比较是在两个站点地图之间进行的,因此咱们在配置过程当中须要分别指定Site Map 1和Site Map2。一般状况下,Site Map 1 咱们默认为当前会话。如图所示,点击【Next】。

3.这时咱们会进入Site Map 1 设置页面,若是是全站点比较咱们选择第一项,若是仅仅比较咱们选中的功能,则选择第二项。以下图,点击【Next】。若是全站点比较,且不想加载其余域时,咱们能够勾选只选择当前域。

4.接下来就是Site Map 2 的配置,对于Site Map 2咱们一样有两种方式,第一种是以前咱们已经保存下来的Burp Suite 站点记录,第二种是从新发生一次请求做为Site Map2.这里,咱们选择第二种方式。

5.若是上一步选择了第二种方式,则进入请求消息设置界面。在这个界面,咱们须要指定通讯的并发线程数、失败重试次数、暂停的间隙时间。

6.设置完Site Map 1 和Site Map 2以后,将进入请求消息匹配设置。在这个界面,咱们能够经过URL文件路径、Http请求方式、请求参数、请求头、请求Body来对匹配条件进行过滤。

7..设置请求匹配条件,接着进入应答比较设置界面。在这个界面上,咱们能够设置哪些内容咱们指定须要进行比较的。从下图咱们能够看出,主要有响应头、form表单域、空格、MIME类型。点击【Next】。

8.若是咱们以前是针对全站进行比较,且是选择从新发生一次做为Site Map2的方式,则界面加载过程当中会不停提示你数据加载的进度,若是涉及功能请求的连接较少,则很快进入比较界面。以下图。

9.从上图咱们能够看到,站点比较的界面上部为筛选过滤器(这个过滤器与其余过滤器使用雷同,此处再也不赘述),下部由左、中、右三块构成。左边为请求的连接列表,中间为Site Map 1 和Site Map 2的消息记录,右边为消息详细信息。当咱们选择Site Map 1某条消息记录时,默认会自动选择Site Map 2与之对应的记录,这是有右上角的【同步选择】勾选框控制的,同时,在右边的消息详细区域,会自动展现Site Map 1与Site Map 2通讯消息的差别,包含请求消息和应答消息,存在差别的地方用底色标注出来。


攻击面分析是Burp Suite 交互工具(Engagement tools)中的功能,这里咱们先看看Analyze Target使用,其余的功能会在高级使用相关章节讲述。
1.首先,咱们经过站点地图,打开Analyze Target,如图所示。

2.在弹出的分析界面中,咱们能看到概况、动态URL、静态URL、参数4个视图。

3.概况视图主要展现当前站点动态URL数量、静态URL数量、参数的总数、惟一的参数名数目,经过这些信息,咱们对当前站点的整体情况有粗线条的了解。
4.动态URL视图展现全部动态的URL请求和应答消息,跟其余的工具相似,当你选中某一条消息时,下方会显示此消息的详细信息。

5.静态URL视图与动态URL视图相似,如图.

6.参数视图有上中下三部分组成,上部为参数和参数计数统计区,你能够经过参数使用的次数进行排序,对使用频繁的参数进行分析;中部为参数对于的使用状况列表,记录对于的参数每一次的使用记录;下部为某一次使用过程当中,请求消息和应答消息的详细信息。

在使用攻击面分析功能时,须要注意,此功能主要是针对站点地图中的请求URL进行分析,若是某些URL没有记录,则不会被分析到。同时,在实际使用中,存在很点站点使用伪静态,若是请求的URL中不带有参数,则分析时没法区别,只能当作静态URL来分析。

第六章 如何使用Burp Spider

经过前一章的学习,咱们了解到,存在于Burp Target中的站点信息,咱们能够直接传送到Burp Spider中进行站点信息的爬取。这一章咱们重点来学习Burp Spider的使用,主要包含两个方面:

  • Spider控制(Control)
  • Spider可选项设置(Options)

Burp Spider的功能主要使用于大型的应用系统测试,它能在很短的时间内帮助咱们快速地了解系统的结构和分布状况,下面咱们就先来看看Spider控制,

Spider控制


Spider控制界面由Spider 状态和Spider 做用域两个功能组成。

Spider 状态除了显示当前进度、传输状况、请求队列等统计信息外,还有Spider运行/暂停按钮与清空队列按钮,分别用来控制Spider是否运行和队列中的数据管理。而Spider 做用域是用来控制Spider的抓取范围,从图中咱们能够看到有两种控制方式,一种是使用上一章讲的Target Scope,另外一种是用户自定义。当咱们选中用户自定义按钮,界面改变成下面的样子,以下图所示。

此处用户自定义做用域的配置与Target Scope 的配置彻底一致,具体使用方法请参数上一章Target Scope 的配置。

Spider可选项设置

Spider可选项设置由抓取设置、抓取代理设置、表单提交设置、应用登录设置、蜘蛛引擎设置、请求消息头设置六个部分组成。

  • 抓取设置(Crawls Settings)
    -此项是用来控制蜘蛛抓取网页内容的方式

    自上而下依次是:检查robots.txt 文件、检测404应答、忽略内容为空的连接、爬取根目录下全部文件和目录、对每个动态页面发送无参数请求、最大连接深度、最大请求URL参数数目
  • 抓取代理设置(Passive Spidering )

    这个设置比较简单,第一个若是勾选,则爬取时经过Burp Proxy,反之则不经过。第二个设置是控制代理的连接深度。默认为0,表示无限深度,即不管有多少层级的URL均须要爬取。
  • 表单提交设置(Form Submission)
    表单提交设置主要是用来控制在蜘蛛抓取过程当中,对于form表单的处理方式,其界面以下图:

    第一个下拉选项中,是对form表单域的处理内容作控制,默认选择Action URL、method、fields、values,即同时处理请求的url、请求方式GET或者POST、包含哪些属性名以及属性值。点击下拉选项,能够选择其中一个或者几个。以下图:

    接下来的设置的控制form表单的处理方式:不提交表单、须要手工确认、使用默认值自动填写三种方式。
    不提交表单的含义是抓取时候不提交表单数据,这个很是好理解;须要手工确认是指当抓取表单时,弹出界面,让渗透测试人员本身手工确认表单数据;使用默认值自动填写是对表单的内容,使用下方的各个配置项进行匹配(匹配时能够使用彻底匹配和正则表达式匹配两种方式其一),默认填写这些值,而后自动进行提交。其界面以下图所示:

    从上图咱们能够看出,对于表单的输入域咱们能够添加和修改以知足实际状况的须要,若是还有其余的属性输入域咱们不想每个都录入,能够勾选“设置不匹配的属性值”,统一指定输入的值。如图中的555-555-0199@example.com
  • 应用登录(Application Login)
    此选择项主要用来控制抓取时,登录页面的处理方式。

    选择项依次是:不提交登录信息、手工确认登录信息、做为普通表单处理(若是选择此项,则把登录表单的form看成其余表单同样处理,对于登录表单将使用”表单提交设置” 中的具体配置)、自动提交登录(选择此项,须要在下方的输入框中指定用户名和密码)
  • 蜘蛛引擎设置(Spider Engine)和HTTP 消息头设置(Requests Header)

    其中蜘蛛引擎设置主要是用来控制蜘蛛抓取的线程数、网络失败时重试的次数、重试暂停间隙等,而HTTP 消息头设置是用来设置Http请求的消息头自定义,好比说,咱们能够编辑消息头信息,能够指定请求为移动设备,或者不一样的手机型号,或者指定为Safari浏览器,指定HTTP协议版本为1.一、使用referer等。

第七章 如何使用Burp Scanner

Burp Scanner的功能主要是用来自动检测web系统的各类漏洞,咱们能够使用Burp Scanner代替咱们手工去对系统进行普通漏洞类型的渗透测试,从而能使得咱们把更多的精力放在那些必需要人工去验证的漏洞上。

在使用Burp Scanner以前,咱们除了要正确配置Burp Proxy并设置浏览器代理外,还须要在Burp Target的站点地图中存在须要扫描的域和URL模块路径。以下图所示:

当Burp Target的站点地图中存在这些域或URL路径时,咱们才能对指定的域或者URL进行全扫描或者分支扫描。下面咱们就来总体的学习一下,一次完整的Burp Scanner使用大概须要哪些步骤。

本章的主要内容有:

  • Burp Scanner基本使用步骤
  • Burp Scanner扫描方式
  • Burp Scanner扫描报告
  • Burp Scanner扫描控制
  • Burp Scanner可选项设置

Burp Scanner基本使用步骤

Burp Scanner基本使用主要分为如下15个步骤,在实际使用中可能会有所改变,但大致的环节主要就是下面的这些。
1.确认Burp Suite正常启动并完成浏览器代理的配置。
2.进入Burp Proxy,关闭代理拦截功能,快速的浏览须要扫描的域或者URL模块。
3.当咱们浏览时,默认状况下,Burp Scanner会扫描经过代理服务的请求,并对请求的消息进行分析来辨别是非存在系统漏洞。同时,当咱们打开Burp Target时,也会在站点地图中显示请求的URL树。

4.咱们能够有针对性的选择Burp Target站点地图下的某个节点上连接URL上,弹出右击菜单,进行Active Scan。而后在弹出的确认框中,点击【YES】即进行扫描整个域。

6.这时,咱们打开Burp Scanner 选项卡,在队列子选项卡中,会看到当前扫描的进度。若是咱们双击URL,则弹出扫描结果的提示信息。

7.若是咱们在Burp Target站点地图下选择某个子目录进行扫描,则会弹出更优化的扫描选项,咱们能够对选项进行设置,指定哪些类型的文件再也不扫描范围以内。

8.当咱们再次返回到Burp Scanner 选项卡界面时,选择的子目录已经开始在扫描中,其扫描的进度依赖于须要扫描内容的多少。
9.若是咱们没有定义了目标做用域(Target Scope),最简单的方式就是在Burp Target站点地图上右击弹出菜单中添加到做用域,而后自动进行扫描。

10.而后进入Burp Scanner的Live scanning子选项卡,在Live Active Scanning控制块中,选择Use suite scope,这样,Burp Scanner将自动扫描通过Burp Proxy的交互信息。

11.当咱们再次使用浏览器对须要测试的系统进行浏览时,Burp Scanner不会发送额外的请求信息,自动在浏览的交互信息的基础上,完成对请求消息的漏洞分析。
12.此时,当我再返回到Burp Target站点地图界面,将提示系统可能存在的漏洞状况,以及处理这些漏洞的建议。

13.同时,咱们也能够在漏洞提示的请求信息上,将消息发送到Burp Repeater模块,对漏洞进行分析和验证。

14.随着Burp Scanner扫描的进度,在Burp Target站点地图界面上的issues模块中的漏洞信息也会不断的更新。
15.当Burp Scanner扫描完成以后,咱们在Burp Target站点地图的选择连接右击,依次选择issues—>report issues for this host 便可导出漏洞报告。


Burp Scanner扫描方式

经过以上的操做步骤咱们能够学习到,Burp Scanner扫描方式主要有两种:主动扫描和被动扫描

  • 主动扫描(Active Scanning)

当使用主动扫描模式时,Burp 会向应用发送新的请求并经过payload验证漏洞。这种模式下的操做,会产生大量的请求和应答数据,直接影响系统的性能,一般使用在非生产环境。它对下列的两类漏洞有很好的扫描效果:

  1. 客户端的漏洞,像XSS、Http头注入、操做重定向;
  2. 服务端的漏洞,像SQL注入、命令行注入、文件遍历。

对于第一类漏洞,Burp在检测时,会提交一下input域,而后根据应答的数据进行解析。在检测过程当中,Burp会对基础的请求信息进行修改,即根据漏洞的特征对参数进行修改,模拟人的行为,以达到检测漏洞的目的。
对于第二类漏洞,通常来讲检测比较困难,由于是发生在服务器侧。好比说SQL注入,有多是返回数据库错误提示信息,也有多是什么也不反馈。Burp在检测过程当中,采用各个技术来验证漏洞是否存在,好比诱导时间延迟、强制修改Boolean值,与模糊测试的结果进行比较,已达到高准确性的漏洞扫描报告。

  • 被动扫描(Passive Scanning)

当使用被动扫描模式时,Burp不会从新发送新的请求,它只是对已经存在的请求和应答进行分析,这对系统的检测比较安全,尤为在你受权访问的许可下进行的,一般适用于生成环境的检测。通常来讲,下列这些漏洞在被动模式中容易被检测出来:

  1. 提交的密码为未加密的明文。
  2. 不安全的Cookie的属性,好比缺乏的HttpOnly和安全标志。
  3. cookie的范围缺失。
  4. 跨域脚本包含和站点引用泄漏。
  5. 表单值自动填充,尤为是密码。
  6. SSL保护的内容缓存。
  7. 目录列表。
  8. 提交密码后应答延迟。
  9. session令牌的不安全传输。
  10. 敏感信息泄露,像内部IP地址,电子邮件地址,堆栈跟踪等信息泄漏。
  11. 不安全的ViewState的配置。
  12. 错误或者不规范的Content-type指令。

虽然被动扫描模式相比于主动模式有不少的不足,但同时也具备主动模式不具有的优势,除了前文说的对系统的检测在咱们受权的范围内比较安全外,当某种业务场景的测试,每测试一次都会致使业务的某方面问题时,咱们也能够使用被动扫描模式,去验证问题是否存在,减小测试的风险。

Burp Scanner扫描报告

当咱们对一个系统进行扫描完毕后,一般须要生成扫描报告,Burp Scanner支持的报告类型有HTML和XML两种格式。没法何种格式的扫描报告,其内容基本一致,主要由如下部分组成。报告样例能够点击Burp Scanner report查看.

除了头部的综述和目录外,每个漏洞的章节一般包含:
1.序号 表示漏洞的序号,若是有多个一样的漏洞,报告中只会有一个序号。
2.漏洞的类型,能够近似地理解与OWASP的类型相对应。
3.漏洞名称,具体可参考 Issue Definitions子选项卡。
4.漏洞路径,漏洞对应的多个URL连接。
5.漏洞的发生点,一般为参数名。
6.问题的描述(Issue background) 描述漏洞发生的成因
7.解决建议(Remediation background)提供解决的思路和建议
8.请求消息和应答消息的详细信息。

若是咱们想对某次的扫描结果进行保存,须要Burp Target 的站点地图子选项卡的问题面板(Issue)上右击,在弹出的菜单中选择report Issues进行设置并保存便可。(注意,若是想导出全部的漏洞,须要选中全部的问题列表)
具体导出漏洞报告的步骤以下:
1.选中须要保存的漏洞,右击弹出菜单,以下图:

2.在弹出的对话框中选择须要保存的漏洞报告格式。

3.选择漏洞明细包含内容。

4.请求消息和应答消息设置。

5.选择报告包含的哪些漏洞。

6.最后,指定报告存放位置、报告名称等属性。

Burp Scanner扫描控制

在对系统作主动扫描时,当咱们激活Burp Scanner,扫描控制的相关设置也同时开始了。以下图所示,当咱们在Burp Target 的站点地图上的某个URL执行Actively scan this host时,会自动弹出过滤设置。

在这里,咱们能够设置扫描时过滤多媒体类型的应答、过滤js、css、图片等静态资源文件。当咱们点击【next】按钮,进入扫描路径分支的选择界面。以下图:

以上是Burp Scanner开始扫描前的控制,当咱们设置完这些以后,将正式进入扫描阶段。此时,在Scan queue队列界面,会显示扫描的进度、问题总数、请求数和错误统计等信息。

在此界面上,咱们能够选中某个记录,在右击的弹出菜单中,对扫描进行控制。好比取消扫描、暂停扫描、恢复扫描、转发其余Burp组件等。以下图:

同时,在Results界面,自动显示队列中已经扫描完成的漏洞明细。

在每个漏洞的条目上,咱们能够选中漏洞。在弹出的右击菜单中,依次选择Set severity,对漏洞的等级进行标识。也能够选择Set confidence,对漏洞是否存在或误报进行标注。

另外,在Live Scanning选项卡中,咱们也能够对请求的域、路径、IP地址、端口、文件类型进行控制,以下图:

若是你选中了Use suite Scope,则指定条件与你在Burp Target中的Scope配置彻底一致,若是你选择了Use customs scope,则能够本身定义Scope,对于Scope的详细配置,请参考Burp Target中的Scope配置相关章节。

Burp Scanner可选项设置

经过前几节的学习,咱们已经知道Burp Scanner有主动扫描和被动扫描两个扫描方式,在Options子选项卡中,主要是针对这两种扫描方式在实际扫描中的扫描动做进行设置。具体的设置包含如下部分:

  1. 攻击插入点设置(Attack Insertion Points)

    Burp Scanner在扫描中,基于原始的请求消息,在每个插入点构造参数,对原数据进行替换,从而去验证系统漏洞的存在性。一般,如下位置都会被Burp Scanner选择为插入点。
  • URL请求参数
  • Body参数(好比form表单的值,上传文件、XML参数、JSON参数)
  • Cookie参数
  • 参数的名称和个数(经过增长参数个数或者增长参数来验证漏洞)
  • Http Header信息(经过对header信息的篡改来验证漏洞)
  • AFM编码(对flash通讯漏洞的验证)
  • REST风格的参数

对于以上的攻击插入点,Burp Scanner仍是能够经过改变参数的位置来验证漏洞,Burp Scanner中共有URL to body 、URL to cookie、Body to URL、Body to cookie、Cookie to URL、Cookie to body 六种方式。当咱们在扫描验证中,能够根据实际请求,灵活选择位置改变的组合,高效快速地验证漏洞。但咱们也应该明白,当咱们选中了位置改变来验证漏洞,即选择了Burp发送更多的请求,若是是在生成系统中的测试须要慎重。

另外,Burp的攻击插入点也支持嵌套的方式,这意思是指,若是一个请求的参数值是JSON对象或者XML文本,Burp Scanner在扫描时,能够对JSON对象或XML文本中的属性、属性值进行验证,这会极大地提升了Burp Scanner对漏洞扫描的涉及面。这是由上图中的use nested insertion points的checkbox是否选中去控制的,默认状况下是选中生效的。

当咱们设置攻击插入点的同时,咱们也能够指定哪些参数进行跳过,不须要进行漏洞验证。在设置时,Burp是按照服务器端参数跳过和全部参数均跳过两种方式来管理的,界面以下图:

2 主动扫描引擎设置(Active Scanning Engine)

主动扫描引擎设置主要是用来控制主动扫描时的线程并发数、网络失败重试间隔、网络失败重试次数、请求延迟、是否跟踪重定向。其中请求延迟设置(Throttle between requests)和其子选项延迟随机数 (Add random variations to throttle)在减小应用负荷,模拟人工测试,使得扫描更加隐蔽,而不易被网络安全设备检测出来。
至于这些参数的具体设置,须要你根据服务器主机的性能、网络带宽、客户端测试机的性能作相应的调整。通常来讲,若是您发现该扫描运行缓慢,但应用程序表现良好,你本身的CPU利用率较低,能够增长线程数,使您的扫描进行得更快。若是您发现发生链接错误,应用程序正在放缓,或你本身的电脑很卡,你应该减小线程数,加大对网络故障的重试次数和重试之间的间隔。

3.主动扫描优化设置(Active Scanning Optimization)

此选项的设置主要是为了优化扫描的速度和准确率,尽可能地提升扫描速度的同时下降漏洞的误报率。
扫描速度(Scan speed)分快速、普通、完全三个选项,不一样的选项对应于不一样的扫描策略,当选择完全扫描(Thorough)时,Burp会发送更多的请求,对漏洞的衍生类型会作更多的推导和验证。而当你选择快速扫描(Fast),Burp则只会作通常性的、简单的漏洞验证。
扫描精准度(Scan accuracy)也一样分为三个选项:最小化假阴性(Minimize false negatives)、普通、最小化假阳性(Minimize false positives)。扫描精准度主要是用来控制Burp的扫描过程当中针对漏洞的测试次数。当咱们选择最小化假阳性时,Burp会作更多的验证测试,来防止假阳性漏洞的存在,但也是偏偏基于此,当Burp作更多的验证测试时,可能存在刚好没法获取应答的误报,增长了漏洞的噪音。
智能攻击选择(Use intelligent attack selection )这个选项经过智能地忽略一些攻击插入点基值的检查,好比说一个参数值包含不正常出如今文件名中的字符,Burp将跳过文件路径遍历检查此参数,使用此选项可加速扫描,并下降在提高扫描速度的同时会致使漏报率上升的风险。

4.主动扫描范围设置(Active Scanning Areas)

在主动扫描过程当中,你能够根据你的扫描时间、关注的重点、可能性存在的漏洞类型等状况,选择不一样的扫描范围。这里可选择的扫描范围有:

  • SQL注入 -能够使不一样的测试技术(基于偏差,时间延迟测试和布尔条件测试),而且也使检查所特有的单独的数据库类型(MSSQL,Oracle和MySQL的)。
  • 操做系统命令注入 - (信息通知和盲注)。
  • 反射式跨站点脚本
  • 存储的跨站点脚本
  • 文件路径遍历
  • HTTP头注入
  • XML/ SOAP注入
  • LDAP注入
  • URL重定向
  • http消息头可操纵
  • 服务器的问题

5.被动扫描范围设置(Passive Scanning Areas)

由于被动扫描不会发送新的请求,只会对原有数据进行分析,其扫描范围主要是请求和应答消息中的以下参数或漏洞类型:Headers、Forms、Links、Parameters、Cookies、MIME type、Caching、敏感信息泄露、Frame框架点击劫持、ASP.NET ViewState 。


第八章 如何使用Burp Intruder

Burp Intruder做为Burp Suite中一款功能极其强大的自动化测试工具,一般被系统安全渗透测试人员被使用在各类任务测试的场景中。本章咱们主要学习的内容有:

  • Intruder使用场景和操做步骤
  • Payload类型与处理
  • Payload 位置和攻击类型
  • 可选项设置(Options)
  • Intruder 攻击和结果分析

Intruder使用场景和操做步骤

在渗透测试过程当中,咱们常用Burp Intruder,它的工做原理是:Intruder在原始请求数据的基础上,经过修改各类请求参数,以获取不一样的请求应答。每一次请求中,Intruder一般会携带一个或多个有效攻击载荷(Payload),在不一样的位置进行攻击重放,经过应答数据的比对分析来得到须要的特征数据。Burp Intruder一般被使用在如下场景:

  1. 标识符枚举
    Web应用程序常用标识符来引用用户、帐户、资产等数据信息。例如,用户名,文件ID和帐户号码。
  2. 提取有用的数据
    在某些场景下,而不是简单地识别有效标识符,你须要经过简单标识符提取一些其余的数据。好比说,你想经过用户的我的空间id,获取全部用户在我的空间标准的昵称和年龄。
  3. 模糊测试
    不少输入型的漏洞,如SQL注入,跨站点脚本和文件路径遍历能够经过请求参数提交各类测试字符串,并分析错误消息和其余异常状况,来对应用程序进行检测。因为的应用程序的大小和复杂性,手动执行这个测试是一个耗时且繁琐的过程。这样的场景,您能够设置Payload,经过Burp Intruder自动化地对Web应用程序进行模糊测试。

一般来讲,使用Burp Intruder进行测试,主要遵循如下步骤:

  1. 确认Burp Suite安装正确并正常启动,且完成了浏览器的代理设置。
  2. 进入Burp Proxy选项卡,关闭代理拦截功能。
  3. 进行历史日志(History)子选项卡,查找可能存在问题的请求日志,并经过右击菜单,发送到Intruder。
  4. 进行Intruder 选项卡,打开Target和Positions子选项卡。这时,你会看到上一步发送过来的请求消息。
  5. 由于咱们了解到Burp Intruder攻击的基础是围绕刚刚发送过来的原始请求信息,在原始信息指定的位置上设置必定数量的攻击载荷Payload,经过Payload来发送请求获取应答消息。默认状况下,Burp Intruder会对请求参数和Cookie参数设置成Payload position,前缀添加 $符合,如上图红色标注位置所示。当发送请求时,会将$标识的参数替换为Payload。
  6. 在Position界面的右边,有【Add $】、【Clear $】、【Auto $】、【Refersh $】四个按钮,是用来控制请求消息中的参数在发送过程当中是否被Payload替换,若是不想被替换,则选择此参数,点击【Clear $】,即将参数前缀$去掉。
  7. 当咱们打开Payload 子选项卡,选择Payload的生成或者选择策略,默认状况下选择“Simple list”,固然你也能够经过下拉选择其余Payload类型或者手工添加。
  8. 此时,咱们再回到Position界面,在界面的右上角,点击【Start attack】,发起攻击。
  9. 此时,Burp会自动打开一个新的界面,包含攻击执行的状况、Http状态码、长度等结果信息。
  10. 咱们能够选择其中的某一次通讯信息,查看请求消息和应答消息的详细。
  11. 不少时候,为了更好的标明应答消息中是否包含有咱们须要的信息,一般在进行攻击前,会进行Options选项的相关配置,使用最多的为正则表达式匹配(Grep - Match)。
  12. 或者,咱们使用结果选项卡中的过滤器,对结果信息进行筛选。
  13. 同时,结果选项卡中所展现的列咱们是能够进行指定的,咱们能够在菜单Columns进行设置。
  14. 最后,选择咱们须要的列,点击【Save】按钮,对攻击结果进行保存。
  15. 固然,保存以前咱们也能够对保存的内容进行设置。

以上这些,是Burp Intruder一次完成的操做步骤,在实际使用中,根据每个人的使用习惯,会存在或多或少的变更。而每个环节中涉及的更详细的配置,将在接下来的章节中作更细致的阐述。


Payload类型与处理

在Burp Intruder的Payload选项卡中,有Payload集合的设置选项,包含了常用的Payload类型,共18种。

他们分别是:

  • 简单列表(Simple list) ——最简单的Payload类型,经过配置一个字符串列表做为Payload,也能够手工添加字符串列表或从文件加载字符串列表。其设置界面以下图

    在此操做界面上,选择的Payload列表中,已经预约义了一组简单Payload列表,包括XSS脚本、CGI脚本、SQL注入脚本、数字、大写字母、小写字母、用户名、密码、表单域的字段名、IIS文件名和目录名等等,极大地方便了渗透测试人员的使用。

  • 运行时文件(Runtime file) ——指定文件,做为相对应Payload位置上的Payload列表。其设置界面以下图:

    当咱们如上图所示,指定Payload set的位置1使用的Payload类型为Runtime file时,下方的Payload Options将自动改变为文件选择按钮和输入框,当咱们点击【select file】选择文件时,将弹出图中所示的对话框,选择指定的Payload文件。运行时,Burp Intruder将读取文件的每一行做为一个Payload。

  • 自定义迭代器(Custom iterator)——这是一款功能强大的Payload,它共有8个占位,每个占位能够指定简单列表的Payload类型,而后根据占位的多少,与每个简单列表的Payload进行笛卡尔积,生成最终的Payload列表。例如,某个参数的值格式是username@@password,则设置此Payload的步骤是:位置1,选择Usernames

    接着,指定位置2,输入值@@

    最后指定位置3,选择Passwords

    当咱们开始攻击时,生成的Payload值如图所示

  • 字符串替换(Character substitution)——顾名思义,此种Payload的类型是对预约义的字符串进行替换后生成新的Payload。好比说,预约义字符串为ABCD,按照下图的替换规则设置后,将对AB的值进行枚举后生成新的Payload。

    生成的Payload以下图所示,分别替换了上图中的a和b的值为4与8

  • 大小写替换(Case modification)——对预约义的字符串,按照大小写规则,进行替换。好比说,预约义的字符串为Peter Wiener,则按照下图的设置后,会生成新的Payload。

    生成的Payload以下

    生成规则由上而下依次是:No change(不改变,使用原始字符串)、To lower case(转为小写字母)、To upper case(转为大写字母)、To Propername(首字母大写,其余小写)、To ProperName(首字母大写,其余不改变),在实际使用中,能够根据本身的使用规则进行勾选设置。

  • 递归grep (Recursive grep)——此Payload类型主要使用于从服务器端提取有效数据的场景,须要先从服务器的响应中提取数据做为Payload,而后替换Payload的位置,进行攻击。它的数据来源了原始的响应消息,基于原始响应,在Payload的可选项设置(Options)中配置Grep规则,而后根据grep去提取数据才能发生攻击。好比,我在 grep extract 中设置取服务器端的EagleId做为新的Payload值。

    点击上图的【OK】按钮以后,完成了Payload的设置。

    当我发起攻击时,Burp会对每一次响应的消息进行分析,若是提取到了EagleId的值,则做为Payload再发生一次请求。操做图以下:

    上图中请求序号为偶数的消息的Payload都是上一次服务器端响应的报文中的EagleId的值。

  • 不合法的Unicode编码(Illegal Unicode)—— 在payloads里用指定的不合法Unicode 编码替换字符自己,从这些Payload列表里产生出一个或者多个有效负荷。在尝试回避基于模式匹配的输入验证时,这个有效负荷会有用的,例如,在防护目录遍历攻击时../和..序列的指望编码的匹配。其配置界面以下:

    上图中的配置选项主要用来控制不合法编码的生成,各项的含义以下:
    maximum overlong UTF-8 length Unicode 编码容许最多使用 6 字节表示一个字符。使用一种类型就能够正确地表示出(0x00-0x7F) Basic ASCII 字符。然而,使用多字节的Unicode 方案也能表示出它们(如, ”overlong”编码)。下拉菜单用来指定是否使用超长编码,以及应该设定的最大使用长度。
    Illegal UTF-8 continuation bytes 当选择的最大超长 UTF-8 长度为 2 字节以上,这个选项是可用的。
    Do illegal UTF-8 当使用多字节编码一个字符时,第一个字节后面的字节应该用 10XXXXXX 这样的二进制格式,来指出后续的字节。然而,第一个字节里最有意义的位会指出后面还有多少后续字节。所以,Unicode 编码例程会安全地忽略掉后续字节的前 2 位。这就意味着每一个后续字节可能有 3 个非法变种,格式为 00XXXXXX, 01XXXXXX 和 11XXXXXX。若是选中这个选项,则非法 Unicode 有效负荷源会为每一个后续字节生成 3 个附加编码。
    Maximize permutations in multi-byte encodings 若是选择的最大超长 UTF-8 长度为 3 字节以上,而且选中” illegal UTF-8 ”这个选项可用。若是”Maximize permutations in multi-byte encodings”没被选中,则在生产非法变种时,不合法 Unicode 有效负荷源会按顺序处理每一个后续字节,为每一个后续字节产生 3 个非法变种,而且其余的后续字节不会改变。若是”Maximize permutations in multi-byte encodings”被选中了,不合法 的Unicode 有效负荷源会为后续字节生成全部的非法变种排序 。 如,多个后续字节会同时被修改。在目标系统上回避高级模式匹配控制时,这个功能就会颇有用。
    Illegal hex 这个选择基本上一直可用。当使用超长编码和后续字节的非法变种(若是选中)生成非法编码项列表时,经过修改由此产生的十六进制编码可能会迷惑到某种模式匹配控制。十六进制编码使用字符 A—F 表明十进制 10—15 的值。然而有些十六进制编码会把G解释为 16, H 为 17,等等。所以 0x1G 会被解释为 32。另外,若是非法的十六进制字符使用在一个 2 位数的十六进制编码的第一个位置,则由此产生的编码就会溢出单个字节的大小,而且有些十六进制编码只使用告终果数字的后 8 个有效位,所以 0x1G 会被解码为 257,而那时会被解释为 1。每一个合法的 2 位数的十六进制编码有 4—6 种相关的非法十六进制表示,若是使用的是上面的编码,则这些表示会被解释为同一种十六进制编码。若是”illegal hex”被选中,则非法 Unicode 有效负荷源会在非法编码项列表里,生成每一个字节的全部可能的非法十六进制编码。
    Maximize permutations in multi-byte encodings 若是选中的最大超长 UTF-8 长度为 2 字节以上而且“illegal hex”也被选中,则这个选项可用。若是Maximize permutations in multi-byte encodings”没被选中,在生成非法十六进制编码时,非法 Unicode 有效负荷源会按顺序处理每一个字节。对于每一个字节,会生成 4—6 个非法十六进制编码,其余的字节不变。若是Maximize permutations in multi-byte encodings”被选中,则非法 Unicode 有效负荷源会为全部的字节,生成非法十六进制的全部排序。如,多个字节会被同时修改。在目标系统上回避高级模式匹配控制时,这个功能会很是有用。
    add % prefix 若是选中这个选项,在产生的有效负荷里的每一个 2 位数十六进制编码前面,都会插入一个%符号。
    Use lower case alpha characters 这个选项决定了是否在十六进制编码里使用大小写字母。
    Total encodings 这个选项为会产生的非法编码数量放置了一个上界,若是大量使用超长编码或者选中了最大列表,这个选项会颇有用,由于那会生成大量的非法编码。
    Match / replace in list items 这个选项用户控制Payload列表中的字符串,它是由匹配字符(Match character)和替换字符编码(Replace with encodings of )来成对的控制Payload的生成。

    当攻击执行时,这个有效负荷源会迭代全部预设项列表,在非法编码集合里,每一个预设
    项替换每一个项里的指定字符的全部实例。

  • 字符块(Character blocks)——这种类型的Payload是指使用一个给出的输入字符串,根据指定的设置产生指定大小的字符块,表现形式为生成指定长度的字符串。它一般使用了边界测试或缓冲区溢出。

    Base string 是指设置原始字符串,Min length是指Payload的最小长度,Max length 是指Payload的最大长度,Step是指生成Payload时的步长。如上图的配置后,生成的Payload以下图所示:

  • 数字类型(Number)——这种类型的Payload是指根据配置,生成一系列的数字做为Payload。它的设置界面以下:

    Type表示使用序列仍是随机数,From表示从什么数字开始,To表示到什么数字截止,Step表示步长是多少,若是是随机数,则How many被激活,表示一共生成多少个随机数。Base表示数字使用十进制仍是十六进制形式,Min integer digits 表示最小的整数是多少,Max integer digits表示最大的整数是多少,若是是10进制,则Min fraction digits 表示小数点后最少几位数,Max fraction digits表示小数点后最多几位数。

  • 日期类型(Dates)——这种类型的Payload是指根据配置,生成一系列的日期。界面以下

    其设置选项比较简单,没有什么特别复杂的,再也不赘述。至于日期格式,能够选择Burp本身提供的样例格式,也能够自定义,自定义的时候,格式的填写形式以下表所示

    格式 样例
    E Sat
    EEEE Saturday
    d 7
    dd 07
    M 6
    MM 06
    MMM Jun
    MMMM June
    yy 16
    yyyy 2016
  • 暴力字典(Brute forcer)——此类Payload生成包含一个指定的字符集的全部排列特定长度的有效载荷,一般用于枚举字典的生成,其设置界面以下:

    Character set 表示生成字典的数据集,今后数据集中抽取字符进行生成。Min length表示生成Payload的最小长度,Max length表示生成Payload的最大长度。

  • 空类型(Null payloads)——这种负载类型产生的Payload,其值是一个空字符串。在攻击时,须要一样的请求反复被执行,在没有任何修改原始请求的场景下此Payload是很是有用的。它可用于各类攻击,例如cookie的序列分析、应用层Dos、或保活会话令牌是在其它的间歇试验中使用。

    在配置Payload生成方式时,它有两个选项,咱们能够指定生成(Generate)多少Payload,也能够设置为一直持续攻击(Continue indefinitely)

  • 字符frobber(Character frobber)——这种类型的Payload的生成规律是:依次修改指定字符串在每一个字符位置的值,每次都是在原字符上递增一个该字符的ASCII码。它一般使用于测试系统使用了复杂的会话令牌的部件来跟踪会话状态,当修改会话令牌中的单个字符的值以后,您的会话仍是进行了处理,那么极可能是这个令牌实际上没有被用来追踪您的会话。其配置界面如图:

    执行后生成的Payload以下图所示:

  • Bit翻转(Bit flipper)——这种类型的Payload的生成规律是:对预设的Payload原始值,按照比特位,依次进行修改。它的设置界面以下图:

    其设置选项主要有:Operate on 指定是对Payload位置的原始数据进行Bit翻转仍是指定值进行Bit翻转,Format of original data 是指是否对原始数据的文本意义进行操做,仍是应该把它看成ASCII十六进制,Select bits to flip是指选择翻转的Bit位置。
    您能够配置基于文本意义进行操做,或基于ASCII十六进制字符串进行翻转。例如,若是原始值是“ab”,基于文本意义的翻转结果是:

    `b
    cb
    eb
    ib
    qb
    Ab
    !b
    ¡b
    ac
    a`
    af
    aj
    ar
    aB
    a"
    a¢

    若是是基于ASCII十六进制字符串进行翻转,则结果是:

    aa
    a9
    af
    a3
    bb
    8b
    eb
    2b

    这种类型的Payload相似于字符frobber,但在你须要更细粒度的控制时是有用的。例如,会话令牌或其余参数值使用CBC模式的块密码加密,有可能系统地由前一密码块内修改Bit位以改变解密后的数据。在这种状况下,你能够使用的Bit 翻转的Payload来肯定加密值内部修改了个别bit位后是否对应用程序产生影响,并了解应用程序是否容易受到攻击。关于加密模式能够点击阅读这篇文章作进一步的了解。

  • 用户名生成器(Username generator)这种类型的Payload主要用于用户名和email账号的自动生成,其设置界面以下图:

    如上图所示,我设置了原始值为t0data@hotmail.com,而后执行此Payload生成器,其生成的Payload值如图所示

  • ECB 加密块洗牌(ECB block shuffler)——这种类型的Payload是基于ECB加密模式的Payload生成器,关于加密模式能够点击阅读这篇文章作进一步的了解。其原理是由于ECB加密模式中每组64位的数据之间相互独立,经过改变分组数据的位置方式来验证应用程序是否易受到攻击。其设置界面以下图,Payload的配置参数同上一个Payload类型雷同,就再也不赘述。如图:

  • Burp Payload生成插件(Extension-generated)——这种类型的Payload是基于Burp插件来生成Payload值,所以使用前必须安装配置Burp插件,在插件里注册一个Intruder payload生成器,供此处调用。其基本设置和使用步骤以下图所示,因后续章节将重点叙述Burp插件,此处再也不展开。

  • Payload复制(Copy other payload)——这种类型的Payload是将其余位置的参数复制到Payload位置上,做为新的Payload值,一般适用于多个参数的请求消息中,它的使用场景多是:
    1.两个不一样的参数须要使用相同的值,好比说,用户注册时,密码设置会输入两遍,其值也彻底同样,能够使用此Payload类型。
    2.在一次请求中,一个参数的值是基于另外一个参数的值在前端经过脚原本生成的值,能够使用此Payload类型。
    它的设置界面和参数比较简单,以下图所示,其中Payload位置的索引值就是指向图中Payload set的值。


Payload位置和攻击类型

首先咱们来看看Payload位置(Payload positions)选项卡的设置界面:

从上图中咱们能够看出,Payload位置的设置是基于Http请求的原始消息做为母板,使用一对 §字符来标记出Payload的位置,在这两个号直接包含了母板文本内容。 当咱们已经把一个Payload在请求消息的特殊位置上时标明后,发起攻击时,Burp Intruder 就把一个Payload值放置到给出的特殊位置上,替换 §符号标示的整个位置。如上图中的参数id后面的 §符号之间的标明的是Payload位置1,name后面的 §符号之间标明的是Payload位置2,这个值对应于Payload设置中的Payload set的值。
咱们能够在消息编辑器中间对Payload位置进行编辑,它主要是由右侧的四个按钮来控制的。

  • 【Add §】——在当前光标的位置添加一个Payload位置标志
  • 【Clear §】——清除全部Payload位置标志或者清除选中的Payload位置标志
  • 【Auto §】——对消息内容中可能须要标志的参数作一个猜想,标志为Payload位置,自动设置完以后再作人工的选择,肯定哪些位置是须要传入Payload的。目前Burp支持自动选择的参数类型有:
    1.URL请求参数
    2.Body参数
    3.cookie参数
    4.复合型参数属性,好比文件上传时候的文件名
    5.XML数据
    6.JSON数据
    虽然Burp默认是支持自动标志这些类型的参数做为Payload位置,但若是是针对于像XML或JSON的节点属性值的,仍是须要手工指定。

  • 【Refresh】——刷新消息内容中带有颜色的部分。

  • 【Clear】——清除消息编辑器中全部内容。

在消息编辑器的上方,有一个下拉选择框,攻击类型(Attack Type)。Burp Intruder支持使用Payload进行多种方式的模拟攻击,目前只要有如下4种。

  • 狙击手模式(Sniper)——它使用一组Payload集合,依次替换Payload位置上(一次攻击只能使用一个Payload位置)被§标志的文本(而没有被§标志的文本将不受影响),对服务器端进行请求,一般用于测试请求参数是否存在漏洞。

  • 攻城锤模式(Battering ram)——它使用单一的Payload集合,依次替换Payload位置上被§标志的文本(而没有被§标志的文本将不受影响),对服务器端进行请求,与狙击手模式的区别在于,若是有多个参数且都为Payload位置标志时,使用的Payload值是相同的,而狙击手模式只能使用一个Payload位置标志。

  • 草叉模式(Pitchfork )——它能够使用多组Payload集合,在每个不一样的Payload标志位置上(最多20个),遍历全部的Payload。举例来讲,若是有两个Payload标志位置,第一个Payload值为A和B,第二个Payload值为C和D,则发起攻击时,将共发起次攻击,第一次使用的Payload分别为A和C,第二次使用的Payload分别为B和D。

  • 集束炸弹模式(Cluster bomb) 它能够使用多组Payload集合,在每个不一样的Payload标志位置上(最多20个),依次遍历全部的Payload。它与草叉模式的主要区别在于,执行的Payload数据Payload组的乘积。举例来讲,若是有两个Payload标志位置,第一个Payload值为A和B,第二个Payload值为C和D,则发起攻击时,将共发起次攻击,第一次使用的Payload分别为A和C,第二次使用的Payload分别为A和D,第三次使用的Payload分别为B和C,第四次使用的Payload分别为B和D。


可选项设置(Options)

可选项设置主要包括请求消息头设置、请求引擎设置、攻击结果设置、grep match, grep extract, grep payloads,以及重定向设置。在使用中,你能够在攻击前进行设置,也能够在攻击过程当中作这些选项的调整。

  • 请求消息头设置(Request Headers)——这个设置主要用来控制请求消息的头部信息,它由Update Content-Length headerSet Connection: close两个选项组成。其中Update Content-Length header若是被选中,Burp Intruder在每一个请求添加或更新Content-Length头为该次请求的HTTP体的长度正确的值。这个功能一般是为插入可变长度的Payload到模板的HTTP请求的主体的攻击中,若是没有指定正确的值,则目标服务器可能会返回一个错误,可能会到一个不完整的请求作出响应,或者可能会无限期地等待请求继续接收数据。Set Connection: close若是被选中,表示Burp Intruder在每一个请求消息中添加或更新值为“关闭”的链接头,这将更迅速地执行。在某些状况下(当服务器自己并不返回一个有效的Content-Length或Transfer-Encoding头),选中此选项可能容许攻击。
  • 请求引擎设置(Request Engine)——这个设置主要用来控制Burp Intruder攻击,合理地使用这些参数能更加有效地完成攻击过程。它有以下参数:Number of threads并发的线程数,Number of retries on network failure 网络失败时候重试次数,Pause before retry重试前的暂停时间间隔(毫秒),Throttle between requests 请求延时(毫秒),Start time开始时间,启动攻击以后多久才开始执行。

  • 攻击结果设置(Attack Results)——这个设置主要用来控制从攻击结果中抓取哪些信息。它的参数有:Store requests / responses 保存请求/应答消息,Make unmodified baseline request 记录请求母板的消息内容,Use denial-of-service mode使用Dos方式,tore full payloads存储全部的Payload值。

  • Grep Match——这个设置主要用来从响应消息中提取结果项,若是匹配,则在攻击结果中添加的新列中标明,便于排序和数据提取。好比说,在密码猜想攻击,扫描诸如“密码不正确”或“登陆成功”,能够找到成功的登陆;在测试SQL注入漏洞,扫描包含“ODBC”,“错误”等消息能够识别脆弱的参数。

    其选项有Match type表示匹配表达式仍是简单的字符串,Case sensitive match是否大小写敏感,Exclude HTTP headers匹配的时候,是否包含http消息头。

  • Grep Extract——这些设置可用于提取响应消息中的有用信息。对于列表中配置的每一个项目,Burp会增长包含提取该项目的文本的新结果列。而后,您能够排序此列(经过单击列标题)命令所提取的数据。此选项是从应用数据挖掘有用的,可以支持普遍的攻击。例如,若是你是经过一系列文档ID的循环,能够提取每一个文档寻找有趣的项目的页面标题。若是您发现返回的其余应用程序用户详细信息的功能,能够经过用户ID重复和检索有关用户寻找管理账户,甚至密码。若是“遗忘密码”的功能须要一个用户名做为参数,并返回一个用户配置的密码提示,您能够经过共同的用户名列表运行和收获的全部相关密码的提示,而后直观地浏览列表寻找容易被猜到密码。

  • Grep Payloads——这些设置可用于提取响应消息中是否包含Payload的值,好比说,你想验证反射性的XSS脚本是否成功,能够经过此设置此项。当此项设置后,会在响应的结果列表中,根据Payload组的数目,添加新的列,显示匹配的结果,你能够经过点击列标题对结果集进行排序和查找。

    其设置项跟上一个相似,须要注意的是Match against pre-URL-encoded payloads,若是你在请求消息时配置了 URL-encode payloads ,则这里表示匹配未编码以前的Payload值,而不是转码后的值。

  • 重定向(Redirections)——这些设置主要是用来控制执行攻击时Burp如何处理重定向,在实际使用中每每是必须遵循重定向,才能实现你的攻击目的。例如,在密码猜想攻击,每次尝试的结果多是密码错误会重定向响应到一个错误消息提示页面,若是密码正确会重定向到用户中心的首页。
    但设置了重定向也可能会遇到其余的问题,好比说,在某些状况下,应用程序存储您的会话中初始请求的结果,并提供重定向响应时检索此值,这时可能有必要在重定向时只使用一个单线程攻击。也可能会遇到,当你设置重定向,应用程序响应会重定向到注销页面,这时候,按照重定向可能会致使您的会话被终止时。
    因其设置选项跟其余模块的重定向设置基本一致,此处就再也不重叙。


Intruder 攻击和结果分析

一次攻击的发起,一般有两种方式。一种是你在Burp Intruder里设置了Target, Positions, Payloads and Options ,而后点击【Start attack】启动攻击;另外一种是你打开一个以前保存的预攻击文件,而后点击【Start attack】启动攻击。不管是哪一种方式的攻击发起,Burp都将弹出攻击结果界面。在攻击的过程当中,你也能够修改攻击配置,或者作其余的操做。攻击结果的界面以下图所示:

从上图咱们能够看出,其界面主要又菜单区、过滤器、Payload执行结果消息记录区、请求/响应消息区四大部分组成。

  • 菜单区 包含Attack菜单、Save菜单、Columns菜单。
    Attack菜单主要用来控制攻击行为的,你能够暂停攻击(pause)、恢复攻击(resume)、再次攻击(repeat)。
    Save菜单主要用来保存攻击的各类数据,Attack 保存当前攻击的副本,下次能够今后文件进行再次攻击;Results table保存攻击的结果列表,至关于图中的Payload执行结果消息记录区数据,固然你能够选择行和列进行保存,只导出你须要的数据;Server responses 保存全部的服务器响应消息;Attack configuration保存当前的攻击配置信息。
    Columns菜单主要用来控制消息记录区的显示列。若是某个列被选中,则在Payload执行结果消息记录区显示,反之则不显示。

  • 过滤器 ——能够经过查询条件、服务器响应的状态码、注释过Payload执行结果消息记录区的信息进行过滤。

  • Payload执行结果消息记录区,又称结果列表(Results Table),记录Payload执行时请求和响应的全部信息,它包含的列有:
    请求序列——显示请求的序列号,若是配置了记录未修改的请求消息母板,则会在第一个进行记录。
    Payload位置——狙击手模式下会记录
    Payload值——若是有多个Payload,则存在多个列
    HTTP 状态码——服务器响应状态码
    请求时间——执行攻击的时间
    响应时间——开始接受到响应时间,单位为毫秒。
    响应完成时间——响应完成的时间,单位为毫秒。
    网络错误——Payload执行时是否发生网络问题
    超时状况——等待应答响应过程当中,是否发生网络超时
    长度——响应消息的长度
    Cookie——任何的Cookie信息
    Grep——若是设置了Grep 匹配、Grep 提取、Grep Payload,则会有多个列显示匹配的信息
    重定向——若是配置了重定向,则显示
    注释——消息记录的注释信息

  • 请求/响应消息区——参考Proxy章节的相关叙述。

在对攻击结果的分析中,你能够经过单击任一列标题(单击标题循环经过升序排序,降序排序和未排序)从新排序表的内容。有效地解释攻击的结果的一个关键部分是定位有效的或成功的服务器响应,并肯定生成这些请求。有效的应答一般能够经过如下中的至少一个存在差别:
1.不一样的HTTP状态代码
2.不一样长度的应答
3.存在或不存在某些表达式
4.错误或超时的发生
5.用来接收或完成响应时间的差别
好比说,在URL路径扫描过程当中,对不存在的资源的请求可能会返回“404未找到”的响应,或正确的URL会反馈的“200 OK”响应。或者在密码猜想攻击,失败的登陆尝试可能会产生一个包含“登陆失败”关键字“200 OK”响应,而一个成功的登陆可能会生成一个“302对象移动”的反应,或不一样的“200 OK”响应页面。

每个渗透测试人员,对Burp Intruder 攻击结果的分析方式可能会存在差别,这主要源于我的水平的不一样和经验的不一样。在实战中,只有慢慢尝试,积累,才能经过快速地对攻击结果的分析获取本身关注的重要信息。


第九章 如何使用Burp Repeater

Burp Repeater做为Burp Suite中一款手工验证HTTP消息的测试工具,一般用于屡次重放请求响应和手工修改请求消息的修改后对服务器端响应的消息分析。本章咱们主要学习的内容有:

  • Repeater的使用
  • 可选项设置(Options)

Repeater的使用

在渗透测试过程当中,咱们常用Repeater来进行请求与响应的消息验证分析,好比修改请求参数,验证输入的漏洞;修改请求参数,验证逻辑越权;从拦截历史记录中,捕获特征性的请求消息进行请求重放。Burp Repeater的操做界面以下图所示:

请求消息区为客户端发送的请求消息的详细信息,Burp Repeater为每个请求都作了请求编号,当咱们在请求编码的数字上双击以后,能够修改请求的名字,这是为了方便多个请求消息时,作备注或区分用的。在编号的下方,有一个【GO】按钮,当咱们对请求的消息编辑完以后,点击此按钮即发送请求给服务器端。服务器的请求域能够在target处进行修改,如上图所示。

应答消息区为对应的请求消息点击【GO】按钮后,服务器端的反馈消息。经过修改请求消息的参数来比对分析每次应答消息之间的差别,能更好的帮助咱们分析系统可能存在的漏洞。

在咱们使用Burp Repeater时,一般会结合Burp的其余工具一块儿使用,好比Proxy的历史记录,Scanner的扫描记录、Target的站点地图等,经过其余工具上的右击菜单,执行【Send to Repeater】,跳转到Repeater选项卡中,而后才是对请求消息的修改以及请求重放、数据分析与漏洞验证。


可选项设置(Options)

与Burp其余工具的设置不一样,Repeater的可选项设置菜单位于整个界面顶部的菜单栏中,如图所示:

其设置主要包括如下内容:

  • 更新Content-Length
    这个选项是用于控制Burp是否自动更新请求消息头中的Content-Length

  • 解压和压缩(Unpack gzip / deflate )
    这个选项主要用于控制Burp是否自动解压或压缩服务器端响应的内容

  • 跳转控制(Follow redirections)
    这个选项主要用于控制Burp是否自动跟随服务器端做请求跳转,好比服务端返回状态码为302,是否跟着应答跳转到302指向的url地址。
    它有4个选项,分别是永不跳转(Never),站内跳转(On-site only )、目标域内跳转(In-scope only)、始终跳转(Always),其中永不跳转、始终跳转比较好理解,站内跳转是指当前的同一站点内跳转;目标域跳转是指target scope中配置的域能够跳转;

  • 跳转中处理Cookie(Process cookies in redirections )
    这个选项若是选中,则在跳转过程当中设置的Cookie信息,将会被带到跳转指向的URL页面,能够进行提交。

  • 视图控制(View)
    这个选项是用来控制Repeater的视图布局

  • 其余操做(Action)
    经过子菜单方式,指向Burp的其余工具组件中。


第十章 如何使用Burp Sequencer

Burp Sequencer做为Burp Suite中一款用于检测数据样本随机性质量的工具,一般用于检测访问令牌是否可预测、密码重置令牌是否可预测等场景,经过Sequencer的数据样本分析,能很好地下降这些关键数据被伪造的风险。本章咱们主要学习的内容有:

  • Sequencer使用步骤
  • 可选项设置(Options)

Sequencer使用步骤

Burp Sequencer做为一款随机数分析的工具,在分析过程当中,可能会对系统形成不可预测的影响,在你不是很是熟悉系统的状况下,建议不要在生产环境进行数据分析。它的使用步骤大致以下:
1.首先,确认Burp Suite安装正确,并配置好浏览器代理,正常运行。
2.从Burp Proxy的历史日志记录中,寻找token或相似的参数,返回右击弹出上下文菜单,点击【Send to Sequencer】。

3.进入Burp Sequencer的Live Capture面板,选中刚才发送过来的记录,点击【Configure】配置须要分析的token或者参数。

4.在弹出的参数配置对话框中,选中参数的值,点击【OK】按钮,完成参数设置。

5.点击【Select Live Capture】,开始进行参数值的获取。

6.当抓取的参数值总数大于100时,点击【pause】或者【stop】,这时能够进行数据分析,点击【Analyze now】即进行数据的随机性分析。

7.等分析结束,则能够看到分析结果的各类图表。

8.固然,咱们也能够把获取的数据保存起来,下一次使用的时候,从文件加载参数,进行数据分析。以下图保存数据。
保存数据
9.当我再次使用时,直接加载数据进行分析便可。

可选项设置(Analysis Options)

分析可选项设置的目的主要是为了控制token或者参数,在进行数据分析过程当中,须要作什么样的处理,以及作什么类型的随机性分析。它主要由令牌处理(Token Handling)和令牌分析(Token Analysis)两部分构成。

  • 令牌处理Token Handling主要控制令牌在数据分析中如何被处理,它的设置界面以下图所示:

    其中Pad short tokens at start / end 表示若是应用程序产生的令牌是具备可变长度的,那么这些令牌在数据分析前都须要被填充,以便于进行的统计检验。你能够选择是否填充在开始位置或每一个令牌的结束位置。在大多数状况下,在开始位置填充是最合适。
    Pad with 表示你能够指定将用于填充的字符。在大多数状况下,数字或ASCII十六进制编码的令牌,用“0”填充是最合适的。
    Base64-decode before analyzing表示在数据分析是否进行base64解码,若是令牌使用了base64编码的话,则须要勾选此项。

  • 令牌分析Token Analysis主要用来控制对数据进行随机性分析的类型,咱们能够选择多个分析类型,也能够单独启用或禁用每一个字符类型级和字节级测试。有时候,执行与启用全部分析类型进行初步分析后,再禁用某些分析类型,以便更好地了解令牌的特色,或隔离由样品表现任何不寻常的特性。其设置界面以下:

其中上面两个选项是控制数据分析的字符类型级,它包含CountTransitions
Count是指分析在令牌内的每一个位置使用的字符的分布,若是是随机生成的样本,所用字符的分布极可能是大体均匀的。在每一个位置上分析统计令牌是随机产生的分布的几率。其分析结果图表以下所示:

Transitions是指分析样品数据中的连续符号之间的变化。若是是随机生成的样品,出如今一个给定的位置上的字符是一样可能经过在该位置使用的字符中的任一项中的下一个标志的改变。在每一个位置上统计分析令牌随机产生到变化的几率。其分析结果图表以下所示:

下面的几项设置是用于控制数据分析的字节级测试,它比字符级测试功能更强大。启用字节级分析中,每一个令牌被转换成一组字节,与设置在每一个字符位置的字符的大小决定的比特的总数。它包含的测试类型有如下七种。

FIPS monobit test——它测试分析0和1在每一个比特位置的分配,若是是随机生成的样本,1和0的数量极可能是大体相等。Burp Sequencer 记录每一个位是经过仍是没经过FIPS试验观测。值得注意的是,FIPS测试正式规范假定样本总数为20000个时。若是你但愿得到的结果与该FIPS规范同样严格的标准,你应该确保达到20000个令牌的样本。
其分析结果图表以下所示:

FIPS poker test—— 该测试将j比特序列划分为四个连续的、非重叠的分组,而后导出4个数,计算每一个数字出现16个可能数字的次数,并采用卡方校验来评估数字的分布。若是样品是随机生成的,这个数字的分布多是近似均匀的。在每一个位置上,经过该测试方式,分析令牌是随机产生的分布的几率。其分析结果图表以下所示:

FIPS runs tests —— 该测试将具备相同值的连续的比特序列在每个位置进行划分红段,而后计算每个段的长度为1,2,3,4,5,和6以及6以上。若是样品是随机生成的,那么这些段的长度极可能是由样本集的大小所肯定的范围以内。在每一个位置上,使用该分析方法,观察令牌是随机生成的几率。其分析结果图表以下所示:

FIPS long runs test —— 这个测试将有相同值的连续的比特序列在每个位置进行划分红段,统计最长的段。若是样品是随机生成的,最长的段的数量极可能是由样本集的大小所肯定的范围以内。在每一个位置上,使用此分析方法,观察令牌是随机产生的最长段的几率。其分析结果图表以下所示:

Spectral tests —— 该测试是在比特序列的每一个位置上作一个复杂的分析,而且可以识别某些样品是经过其余统计检验的非随机性证据。样本试验经过比特序列和将每一个系列的连续的数字做为多维空间的坐标并经过它绘制在这些坐标来肯定每一个位置这个空间的一个点。若是是随机生成的样本,点的此空间中的分布多是大体均匀;在该空间内的簇的外观表示数据极可能是非随机的。在每一个位置,使用此种分析方法,观察令牌是随机发生的几率。其分析结果图表以下所示:

Correlation test ——比较每一个位置具备相同值的令牌样本与每个位置具备不一样值的短令牌样本之间的熵,以测试在令牌内部的不一样的比特位置中的值之间的任何统计学显著关系。若是样品是随机生成的,在给定的比特位置处的值是一样可能伴随着一个或一个零在任何其它位的位置。在每一个位置上,使用此种分析方法,观察令牌是随机生成的可能性。为了防止任意的结果,当两个比特之间观察到必定程度的相关性,该测试调整,其显着性水平下是基于全部其余比特级测试的位的显着性水平。其分析结果图表以下所示:

Compressoion test —— 这种测试不使用其余测试中使用的统计方法,而是经过简单直观的指标统计比特序列中每一个位置熵的数量。该分析方法尝试使用标准ZLIB压缩比特序列的每一个位置,结果代表,当它被压缩在比特序列的大小的比例减小,较高压缩程度代表数据是不太可能被随机产生的。其分析结果图表以下所示:

本章涉及诸多数学统计分析的知识,在表述或理解过程当中因为知识水平的限制可能会存在错误,若是有问题的地方,欢迎发送邮件到 t0data@hotmail.com,先感谢您的批评指正。


第十一章 如何使用Burp Decoder

Burp Decoder的功能比较简单,做为Burp Suite中一款编码解码工具,它能对原始数据进行各类编码格式和散列的转换。其界面以下图,主要由输入域、输出域、编码解码选项三大部分组成。

输入域即输入须要解码的原始数据,此处能够直接填写或粘贴,也能够经过其余Burp工具的上下文菜单中【Send to Decoder】;输出域即对输入域进行解码的结果显示出来。不管是输入域仍是输出域都支持文本与Hex两种格式,其中编码解码选项中,由解码选项(Decode as)、编码选项(Encode as)、散列(Hash)三个构成。实际使用中,能够根据场景的须要进行设置。对于编码解码选项,目前支持URL、HTML、Base6四、ASCII、16进制、8进制、2进制、GZIP共八种形式的格式转换,Hash散列支持SHA、SHA-22四、SHA-25六、SHA-38四、SHA-5十二、MD二、MD5格式的转换,更重要的是,对于同一个数据,咱们能够在Decoder的界面,进行屡次编码解码的转换。以下图所示:


第十二章 如何使用Burp Comparer

Burp Comparer在Burp Suite中主要提供一个可视化的差别比对功能,来对比分析两次数据之间的区别。使用中的场景多是:
1.枚举用户名过程当中,对比分析登录成功和失败时,服务器端反馈结果的区别。
2.使用 Intruder 进行攻击时,对于不一样的服务器端响应,能够很快的分析出两次响应的区别在哪里。
3.进行SQL注入的盲注测试时,比较两次响应消息的差别,判断响应结果与注入条件的关联关系。
其界面以下图:

对于Comparer的使用,主要有两个环节组成,先是数据加载,而后是差别分析。
Comparer数据加载的方式经常使用的有:从其余Burp工具经过上下文菜单转发过来、直接粘贴、从文件加载三种方式。当加载完毕后,若是你选择了两次不一样的请求或应答消息,则下发的比较按钮将被激活,能够选择文本比较或者字节比较。以下图:

若是点击了【words】或者【bytes】,则进入比对界面,页面自动经过背景颜色显示数据的差别。以下图:

其中,文本比较(words)是指经过文本的方式,好比说以HTML的方式,比较两个数据的差别;而字节比较(bytes)是指经过16进制的形式,比较两次内容的差别。以下图,注意下发不一样内容的颜色标注。