https://www.gitbook.com/book/t0data/burpsuite/detailscss
刚接触web安全的时候,很是想找到一款集成型的渗透测试工具,找来找去,最终选择了Burp Suite,除了它功能强大以外,还有就是好用,易于上手。因而就从网上下载了一个破解版的来用,记得那时候好像是1.2版本,功能也没有如今这么强大。在使用的过程当中,慢慢发现,网上系统全量的介绍BurpSuite的书籍太少了,大可能是零星、片断的讲解,不成体系。后来慢慢地出现了很多介绍BurpSuite的视频,现状也变得愈来愈好。但往往遇到不知道的问题时,仍是不得不搜寻BurpSuite的官方文档和英文网页来解决问题,也正是这些问题,慢慢让我以为有必要整理一套全面的BurpSuite中文教程,算是为web安全界作尽本身的一份微薄之力,也才有了大家如今看到的这一系列文章。html
我给这些文章取了IT行业图书比较通用的名称: 《BurpSuite实战指南》,您能够称我为中文编写者,文章中的内容主要源于BurpSuite官方文档和多位国外安全大牛的经验总结,我只是在他们的基础上,结合个人经验、理解和实践,编写成如今的中文教程。本书我也没有出版成纸质图书的计划,本着IT人互联分享的精神,放在github,作免费的电子书。于业界,算一份小小的贡献;于本身,算一次总结和锻炼。java
以上,是为小记。git
感谢您阅读此书,阅读过程当中,若是发现错误的地方,欢迎发送邮件到 t0data@hotmail.com,感谢您的批评指正。github
本书包含如下章节内容:web
Burp Suite是一个集成化的渗透测试工具,它集合了多种渗透测试组件,使咱们自动化地或手工地能更好的完成对web应用的渗透测试和攻击。在渗透测试中,咱们使用Burp Suite将使得测试工做变得更加容易和方便,即便在不须要娴熟的技巧的状况下,只有咱们熟悉Burp Suite的使用,也使得渗透测试工做变得轻松和高效。正则表达式
Burp Suite是由Java语言编写而成,而Java自身的跨平台性,使得软件的学习和使用更加方便。Burp Suite不像其余的自动化测试工具,它须要你手工的去配置一些参数,触发一些自动化流程,而后它才会开始工做。chrome
Burp Suite可执行程序是java文件类型的jar文件,免费版的能够从免费版下载地址进行下载。免费版的Burp Suite会有许多限制,不少的高级工具没法使用,若是您想使用更多的高级功能,须要付费购买专业版。专业版与免费版的主要区别有windows
本章主要讲述Burp Suite的基本配置,包含以下内容:浏览器
Burp Suite是一个无需安装软件,下载完成后,直接从命令行启用便可。但Burp Suite是用Java语言开发的,运行时依赖于JRE,须要提早Java可运行环境。
若是没有配置Java环境或者不知道如何配置的童鞋请参考win7电脑上的Java环境配置 配置完Java环境以后,首先验证Java配置是否正确,若是输入java -version 出现下图的结果,证实配置正确且已完成。
这时,你只要在cmd里执行java -jar /your_burpsuite_path/burpSuite.jar便可启动Burp Suite,或者,你将Burp Suite的jar放入class_path目录下,直接执行java -jar burpSuite.jar也能够启动。
==注意:your_burpsuite_path为你Burp Suite所在路径,burpSuite.jar文件名必须跟你下载的jar文件名称一致==
若是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脚本的内容为
java -jar -Xmx2048M /your_burpsuite_path/burpsuite.jar
其中参数-Xmx指定JVM可用的最大内存,单位能够是M,也能够是G,若是是G为单位的话,则脚本内容为:
java -jar -Xmx2G /your_burpsuite_path/burpsuite.jar
更多关于JVM性能调优的知识请阅读 Oracle JVM Tuning
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主要拦截http和https协议的流量,经过拦截,Burp Suite以中间人的方式,能够对客户端请求数据、服务端返回作各类处理,以达到安全评估测试的目的。
在平常工做中,咱们最经常使用的web客户端就是的web浏览器,咱们能够经过代理的设置,作到对web浏览器的流量拦截,并对通过Burp Suite代理的流量数据进行处理。
下面咱们就分别看看IE、Firefox、Google Chrome下是如何配置Burp Suite代理的。
当Burp Suite 启动以后,默认分配的代理地址和端口是127.0.0.1 :8080,咱们能够从Burp Suite的proxy选项卡的options上查看。如图:
如今,咱们经过以下步骤的设置便可完成IE经过Burp Suite 代理的相关配置。
与IE的设置相似,在FireFox中,咱们也要进行一些参数设置,才能将FireFox浏览器的通讯流量,经过Burp Suite代理进行传输。详细的步骤以下:
Google Chrome使用Burp Suite做为代理服务器的配置步骤以下:
除了上述的三种经常使用的浏览器外,还有Safari浏览器也有很多的用户在使用,其代理配置请点击阅读进行查看。
Burp Proxy 是Burp Suite以用户驱动测试流程功能的核心,经过代理模式,可让咱们拦截、查看、修改全部在客户端和服务端之间传输的数据。
本章主要讲述如下内容:
经过上一章的学习,咱们对Burp Suite代理模式和浏览器代理设置有了基本的了解。Burp Proxy的使用是一个按部就班的过程,刚开始使用时,可能并不能很快就获取你所指望的结果,慢慢地当你熟悉了它的功能和使用方法,你就能够用它很好地对一个产品系统作安全能力评估。 通常使用Burp Proxy时,大致涉及环节以下:
默认状况下,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,从界面显示来看,主要包括如下几大板块(涉及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】按钮时,在弹出的匹配或替换规则输入对话框中咱们能够看到,它能够对请求和返回消息的消息头,消息体、请求参数名、请求参数值、请求的第一行进行匹配和替换。
例如,当咱们要替换全部返回消息中的邮箱地址为t0data@burpsuite.com时,能够参考下图的设置填写输入项并保存验证。
其余配置项主要是杂项设置。其界面以下:
自上而下依次的功能是
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的代理模式有了更深刻的理解,知道了做为中间人的Burp Proxy在消息拦截过程当中,能够对请求消息、应答消息作多方面的修改,并能够把消息传递给Burp的其余组件作进一步的测试。同时,Burp Proxy的历史日志功能和多种筛选过滤器让咱们在使用中,能快速地查找须要的数据和关键信息,这些,都极大地帮助你提升了工做效率。
在前一章,咱们已经学习了HTTP消息如何经过Burp Proxy进行拦截和处理,本章咱们将继续学习HTTPS协议消息的拦截和处理。
HTTPS协议是为了数据传输安全的须要,在HTTP原有的基础上,加入了安全套接字层SSL协议,经过CA证书来验证服务器的身份,并对通讯消息进行加密。基于HTTPS协议这些特性,咱们在使用Burp Proxy代理时,须要增长更多的设置,才能拦截HTTPS的消息。
本章包含的主要内容有
咱们都知道,在HTTPS通讯过程当中,一个很重要的介质是CA证书,下面就咱们一块儿来看看Burp Suite中CA证书的安装。
通常来讲,Burp Proxy代理过程当中的CA主要分为以下几个步骤(以win7下IE9为例):
CA证书的卸载的一般有两种方式,第一种方式在上一章节CA证书安装中的第6步,找到须要卸载的证书,点击【删除】便可。咱们这里主要描述第二种删除方式,主要是为了解决在第一种方式的基础上删除按钮失效或者证书列表里看不到的证书也一块儿删除的方法。
除了IE以外,其余的浏览器如FireFox、Chrome、Sarifa等都证书的安装和卸载基本相似,操做时能够以IE的CA证书安装做为参考。
当咱们启动Burp Suite时,默认会监听本地回路地址的8080端口,除此以外,咱们也能够在默认监听的基础上,根据咱们本身的需求,对监听端口和地址等参数进行自由设置。特别是当咱们测试非浏览器应用时,没法使用浏览器代理的方式去拦截客户端与服务器端通讯的数据流量,这种状况下,咱们会使用本身的Proxy监听设置,而不会使用默认设置。
当咱们在实际使用中,可能须要同时测试不一样的应用程序时,咱们能够经过设置不一样的代理端口,来区分不一样的应用程序,Proxy监听即提供这样的功能设置。点击图中的【Add】按钮,会弹出Proxy监听设置对话框,里面有更丰富的设置,知足咱们不一样的测试需求。
Proxy监听设置主要包含3块功能:
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将流量转发给真实的服务器。
【原文:burpsuite实战指南 做者:t0data 安全脉搏整理发布】