引子
刚接触web安全的时候,非常想找到一款集成型的渗透测试工具,找来找去,最终选择了Burp Suite,除了它功能强大之外,还有就是好用,易于上手。于是就从网上下载了一个破解版的来用,记得那时候好像是1.2版本,功能也没有现在这么强大。在使用的过程中,慢慢发现,网上系统全量的介绍的书籍太少了,大多是零星、片段的讲解,不成体系。后来慢慢地出现了不少介绍的视频,现状也变得越来越好。但每每遇到不知道的问题时,还是不得不搜寻的官方文档和英文网页来解决问题,也正是这些问题,慢慢让我觉得有必要整理一套全面的中文教程,算是为web安全界做尽自己的一份微薄之力,也才有了你们现在看到的这一系列文章。
我给这些文章取了IT行业图书比较通用的名称: 《实战指南》,您可以称我为中文编写者,文章中的内容主要源于官方文档和多位国外安全大牛的经验总结,我只是在他们的基础上,结合我的经验、理解和实践,编写成现在的中文教程。本书我也没有出版成纸质图书的计划,本着IT人互联分享的精神,放在,做免费的电子书。于业界,算一份小小的贡献;于自己,算一次总结和锻炼。
以上,是为小记。
感谢您阅读此书,阅读过程中,如果发现错误的地方,欢迎发送邮件到 ,感谢您的批评指正。
本书包含以下章节内容:
第一部分 Burp Suite 基础Burp Suite 安装和环境配置Burp Suite代理和浏览器设置如何使用Burp Suite 代理SSL和Proxy高级选项如何使用Burp 如何使用Burp 如何使用Burp 如何使用Burp 如何使用Burp 如何使用Burp 如何使用Burp 如何使用Burp 第二部分 Burp Suite 高级数据查找和拓展功能的使用全局参数设置和使用Burp Suite应用商店插件的使用如何编写自己的Burp Suite插件第三部分 Burp Suite 综合使用使用Burp Suite测试Web 服务使用Burp, 进行自动化SQL注入渗透测试使用Burp、进行XSS检测使用Burp 、进行浏览器使用Burp 、 进行安卓app渗透测试第一章 Burp Suite 安装和环境配置
Burp Suite是一个集成化的渗透测试工具,它集合了多种渗透测试组件,使我们自动化地或手工地能更好的完成对web应用的渗透测试和攻击。在渗透测试中,我们使用Burp Suite将使得测试工作变得更加容易和方便,即使在不需要娴熟的技巧的情况下,只有我们熟悉Burp Suite的使用,也使得渗透测试工作变得轻松和高效。
Burp Suite是由Java语言编写而成,而Java自身的跨平台性,使得软件的学习和使用更加方便。Burp Suite不像其他的自动化测试工具,它需要你手工的去配置一些参数,触发一些自动化流程,然后它才会开始工作。
Burp Suite可执行程序是java文件类型的jar文件,免费版的可以从免费版下载地址进行下载。免费版的Burp Suite会有许多限制,很多的高级工具无法使用,如果您想使用更多的高级功能,需要付费购买专业版。专业版与免费版的主要区别有
Burp 工作空间的保存和恢复拓展工具,如 , 和 Task
本章主要讲述Burp Suite的基本配置,包含如下内容:
如何从命令行启动Burp Suite
Burp Suite是一个无需安装软件,下载完成后,直接从命令行启用即可。但Burp Suite是用Java语言开发的,运行时依赖于JRE,需要提前Java可运行环境。
如果没有配置Java环境或者不知道如何配置的童鞋请参考win7电脑上的Java环境配置 配置完Java环境之后,首先验证Java配置是否正确,如果输入java - 出现下图的结果,证明配置正确且已完成。
这时,你只要在cmd里执行java -jar //.jar即可启动Burp Suite,或者,你将Burp Suite的jar放入目录下,直接执行java -jar .jar也可以启动。
==注意:为你Burp Suite所在路径,.jar文件名必须跟你下载的jar文件名称一致==
如何设置JVM内存 大小
如果Java可运行环境配置正确的话,当你双击.jar即可启动软件,这时,Burp Suite自己会自动分配最大的可用内存,具体实际分配了多少内存,默认一般为64M。当我们在渗透测试过程,如果有成千上万个请求通过Burp Suite,这时就可能会导致Burp Suite因内存不足而崩溃,从而会丢失渗透测试过程中的相关数据,这是我们不希望看到的。因此,当我们启动Burp Suite时,通常会指定它使用的内存大小。 一般来说,我们通常会分配2G的内存供Burp Suite使用,如果你的电脑内存足够,可以分配4G;如果你的电脑内存足够小,你也可以分配128M。当你给Burp Suite分配足够多的内存时,它能做的工作也会更多。指定Burp Suite占用内存大小的具体配置方法是在启动脚本里添加如下命令行参数: 假设启动脚本的名称为.bat,则该bat脚本的内容为
1java -jar -Xmx2048M /your_burpsuite_path/burpsuite.jar 2
其中参数-Xmx指定JVM可用的最大内存,单位可以是M,也可以是G,如果是G为单位的话,则脚本内容为:
1java -jar -Xmx2G /your_burpsuite_path/burpsuite.jar 2
IPv6问题调试
Burp Suite是不支持IPv6地址进行数据通信的,这时在cmd控制台里就会抛出如下异常
1java.net.SocketException: Permission denied 2
同时,浏览器访问时,也会出现异常
1Burp proxy error: Permission denied: connect 2
当出现如上问题时,我们需要修改启动脚本,添加对IPv4的指定后,重启Burp Suite即可。
1java -jar -Xmx2048M -Djava.net.preferIPv4Stack=true /your_burpsuite_path/burpsuite.jar 2
通过 .=true参数的设置,告诉Java运行环境,使用IPv4协议栈进行数据通信,IPv6协议将会被禁止使用。 这个错误最常见于64位的操作系统上,使用了32位的JDK
第二章 Burp Suite代理和浏览器设置
Burp Suite代理工具是以拦截代理的方式,拦截所有通过代理的网络流量,如客户端的请求数据、服务器端的返回信息等。Burp Suite主要拦截http和https协议的流量,通过拦截,Burp Suite以中间人的方式,可以对客户端请求数据、服务端返回做各种处理,以达到安全评估测试的目的。
在日常工作中,我们最常用的web客户端就是的web浏览器,我们可以通过代理的设置,做到对web浏览器的流量拦截,并对经过Burp Suite代理的流量数据进行处理。
下面我们就分别看看IE、、 下是如何配置Burp Suite代理的。
IE设置
当Burp Suite 启动之后,默认分配的代理地址和端口是127.0.0.1 :8080,我们可以从Burp Suite的proxy选项卡的上查看。如图:
现在,我们通过如下步骤的设置即可完成IE通过Burp Suite 代理的相关配置。
启动IE浏览器点击【工具】菜单,选择【】选项打开【连接】选项卡,点击【局域网设置】,进行代理设置。在代理服务器设置的地址输入框中填写127.0.0.1,端口填写8080,点击【确定】,完成代理服务器的设置。这时,IE的设置已经完成,你可以访问 将会看到Burp Suite的欢迎界面。设置
与IE的设置类似,在中,我们也要进行一些参数设置,才能将浏览器的通信流量,通过Burp Suite代理进行传输。详细的步骤如下:
启动浏览器,点击【工具】菜单,点击【选项】。在新打开的about:#窗口中,依次点击【高级】-【网络】,我们将会看到连接网络的设置选项。点击【设置】,在弹出的【连接设置】对话框中,找到“http代理”,填写127.0.0.1,端口填写8080,最后点击【确认】保存参数设置,完成的代理配置。当然,浏览器中,可以添加的扩展组件,对代理服务器进行管理。例如FireX Proxy、Proxy 都是很好用的组件,感兴趣的读者可以自己下载试用一下。 设置
使用Burp Suite作为代理服务器的配置步骤如下:
启动 浏览器,在地址栏输入:///,回车后即显示 浏览器的配置界面点击底部的【显示高级设置】,将显示 浏览器的高级设置。当然,你也可以直接在搜索框中输入“代理”,回车后将自动定位到代理服务器设置功能。点击【更改代理服务器设置】,系统下将会弹出IE浏览器的代理设置,此时,按照IE浏览器的设置步骤,完成代理服务器的配置即可。
除了上述的三种常用的浏览器外,还有浏览器也有不少的用户在使用,其代理配置请点击阅读进行查看。
第三章 如何使用Burp Suite代理
Burp Proxy 是Burp Suite以用户驱动测试流程功能的核心,通过代理模式,可以让我们拦截、查看、修改所有在客户端和服务端之间传输的数据。
本章主要讲述以下内容:
Burp Proxy基本使用
通过上一章的学习,我们对Burp Suite代理模式和浏览器代理设置有了基本的了解。Burp Proxy的使用是一个循序渐进的过程,刚开始使用时,可能并不能很快就获取你所期望的结果,慢慢地当你熟悉了它的功能和使用方法,你就可以用它很好地对一个产品系统做安全能力评估。 一般使用Burp Proxy时,大体涉及环节如下:
首先,确认JRE已经安装好,Burp Suite可以启动并正常运行,且已经完成浏览器的代理服务器配置。打开Proxy功能中的选项卡,确认拦截功能为“ is on”状态配置burpsuit谷歌浏览器证书及HSTS问题处理,如果显示为“ is off”则点击它,打开拦截功能。打开浏览器,输入你需要访问的URL(以为例)并回车,这时你将会看到数据流量经过Burp Proxy并暂停,直到你点击【】,才会继续传输下去。如果你点击了【Drop】,则这次通过的数据将会被丢失,不再继续处理。当我们点击【】之后,我们将看到这次请求返回的所有数据。当Burp Suite拦截的客户端和服务器交互之后,我们可以在Burp Suite的消息分析选项卡中查看这次请求的实体内容、消息头、请求参数等信息。消息分析选项视图主要包括以下四项:Raw 这是视图主要显示web请求的raw格式,包含请求地址、http协议版本、主机头、浏览器信息、可接受的内容类型、字符集、编码方式、等。你可以通过手工修改这些信息,对服务器端进行渗透测试。 这个视图主要显示客户端请求的参数信息、包括GET或者POST请求的参数、参数。渗透人员可以通过修改这些请求参数来完成对服务器端的渗透测试。 这个视图显示的信息和Raw的信息类似,只不过在这个视图中,展示得更直观、友好。Hex 这个视图显示Raw的二进制内容,你可以通过hex编辑器对请求的内容进行修改。
默认情况下,Burp Proxy只拦截请求的消息,普通文件请求如css、js、图片是不会被拦截的,你可以修改默认的拦截选项来拦截这些静态文件,当然,你也可以通过修改拦截的作用域、参数或者服务器端返回的关键字来控制Burp Proxy的消息拦截,这些在后面的章节中我们会进一步的学习。 所有流经Burp Proxy的消息,都会在http 记录下来,我们可以通过历史选项卡,查看传输的数据内容,对交互的数据进行测试和验证。同时,对于拦截到的消息和历史消息,都可以通过右击弹出菜单,发送到Burp的其他组件,如、、、、、、、,进行进一步的测试。如下图所示:
数据拦截与控制
Burp Proxy的拦截功能主要由选项卡中的、Drop、 is on/off、、 以及构成,它们的功能分别是: 的功能是当你查看过消息或者重新编辑过消息之后,点击此按钮,将发送消息至服务器端。 Drop的功能是你想丢失当前拦截的消息,不再到服务器端。 is on表示拦截功能打开,拦截所有通过Burp Proxy的请求数据; is off表示拦截功能关闭,不再拦截通过Burp Proxy的所有请求数据。 的功能是除了将当前请求的消息传递到、、、、、、组件外,还可以做一些请求消息的修改,如改变GET或者POST请求方式、改变请求body的编码,同时也可以改变请求消息的拦截设置,如不再拦截此主机的消息、不再拦截此IP地址的消息、不再拦截此种文件类型的消息、不再拦截此目录的消息,也可以指定针对此消息拦截它的服务器端返回消息。
的功能是指对拦截的消息添加备注配置burpsuit谷歌浏览器证书及HSTS问题处理,在一次渗透测试中,你通常会遇到一连串的请求消息,为了便于区分,在某个关键的请求消息上,你可以添加备注信息。
的功能与功能有点类似,即对当前拦截的消息设置高亮,以便于其他的请求消息相区分。
除了中可以对通过Proxy的消息进行控制外,在可选项设置选项卡中也有很多的功能设置也可以对流经的消息进行控制和处理。
可选项配置
当我们打开可选项设置选项卡,从界面显示来看,主要包括以下几大板块(涉及https的功能不包含在本章内容里,后面会一章专门叙述):
客户端请求消息拦截
客户端请求消息拦截是指拦截客户端发送到服务器端消息的相关配置选项,其界面如下:
主要包含拦截规则配置、错误消息自动修复、自动更新-消息头三个部分。
如果 based on the rules的被选中,则拦截所有符合勾选按钮下方列表中的请求规则的消息都将被拦截,拦截时,对规则的过滤是自上而下进行的。当然,我们可以根据自己的需求,通过【Up】和【Down】按钮,调节规则所在位置和排序。同时,我们可以点击【Add】添加一条规则,也可以选中一条规则,通过点击【Edit】进行编辑、点击【】进行删除。当我们点击【Add】按钮时,会弹出规则添加的输入对话框,如下图:拦截规则添加时,共包含4个输入项。 表示当前的规则与其他规则是与的方式(And)还是或的方式(Or)共存;Match type表示匹配类型,此处匹配类型可以基于域名、IP地址、协议、请求方法、URL、文件类型、参数, , 头部或者内容, 状态码, MIME类型, HTML页面的title等。Match 表示此条规则是匹配还是不匹配Match 输入的关键字。当我们输入这些信息,点击【OK】按钮,则规则即被保存。如果 fix 的被选中,则表示在一次消息传输中,Burp Suite会自动修复丢失或多余的新行。比如说,一条被修改过的请求消息,如果丢失了头部结束的空行,Burp Suite会自动添加上;如果一次请求的消息体中,URl编码参数中包含任何新的换行,Burp Suite将会移除。此项功能在手工修改请求消息时,为了防止错误,有很好的保护效果。如果 -的被选中,则当请求的消息被修改后,-消息头部也会自动被修改,替换为与之相对应的值。服务器端返回消息拦截
服务器端返回消息拦截顾名思义是指拦截服务器端返回的消息的相关配置项,其界面如下:
它的功能主要包含 based on the rules和 - when the 两个选项,其功能分别与客户端请求消息拦截中的 based on the rules、 - when the 相对应,就不在赘述,请参上一节的内容。
服务器返回消息修改
服务器返回消息修改是指自动修改服务器端返回消息的相关设置项。其界面如下:
自上而下,每一个选择项分别对应的功能是
通过服务器返回消息修改可选择项的设置,可以方便渗透测试人员在安全评估过程中突破原有的数据限制,更好、更快地检测服务器端的安全性。
正则表达式配置
此项配置主要用来自动替换请求消息和服务器端返回消息中的某些值和文本,它与前文的规则的不同之处还在于支持正则表达式语言。
当点击【Add】按钮时,在弹出的匹配或替换规则输入对话框中我们可以看到,它可以对请求和返回消息的消息头,消息体、请求参数名、请求参数值、请求的第一行进行匹配和替换。
例如,当我们要替换所有返回消息中的邮箱地址为时,可以参考下图的设置填写输入项并保存验证。
其他配置项
其他配置项主要是杂项设置。其界面如下:
自上而下依次的功能是
这个选项主要用来配置功能的生效方式,分为总是生效、 总是失效 、从上一次的Burp Suite中恢复设置3种方式。
历史记录
Burp Proxy的历史记录由HTTP历史和历史两个部分组成。
评论留言