刚接触web安全的时候,非常想找到一款集成型的渗透测试工具,找来找去,最终选择了Burp Suite,除了它功能强大之外,还有就是好用,易于上手。于是就从网上下载了一个破解版的来用,记得那时候好像是1.2版本,功能也没有现在这么强大。在使用的过程中,慢慢发现,网上系统全量的介绍BurpSuite的书籍太少了,大多是零星、片段的讲解,不成体系。后来慢慢地出现了不少介绍BurpSuite的视频,现状也变得越来越好。但每每遇到不知道的问题时,还是不得不搜寻BurpSuite的官方文档和英文网页来解决问题,也正是这些问题,慢慢让我觉得有必要整理一套全面的BurpSuite中文教程,算是为web安全界做尽自己的一份微薄之力,也才有了你们现在看到的这一系列文章。
我给这些文章取了IT行业图书比较通用的名称: 《BurpSuite实战指南》,您可以称我为中文编写者,文章中的内容主要源于BurpSuite官方文档和多位国外安全大牛的经验总结,我只是在他们的基础上,结合我的经验、理解和实践,编写成现在的中文教程。本书我也没有出版成纸质图书的计划,本着IT人互联分享的精神,放在github,做免费的电子书。于业界,算一份小小的贡献;于自己,算一次总结和锻炼。
以上,是为小记。
感谢您阅读此书,阅读过程中,如果发现错误的地方,欢迎发送邮件到 t0data@hotmail.com,感谢您的批评指正。
本书包含以下章节内容:
Burp Suite是一个集成化的渗透测试工具,它集合了多种渗透测试组件,使我们自动化地或手工地能更好的完成对web应用的渗透测试和攻击。在渗透测试中,我们使用Burp Suite将使得测试工作变得更加容易和方便,即使在不需要娴熟的技巧的情况下,只有我们熟悉Burp Suite的使用,也使得渗透测试工作变得轻松和高效。
Burp Suite是由Java语言编写而成,而Java自身的跨平台性,使得软件的学习和使用更加方便。Burp Suite不像其他的自动化测试工具,它需要你手工的去配置一些参数,触发一些自动化流程,然后它才会开始工作。
Burp Suite可执行程序是java文件类型的jar文件,免费版的可以从免费版下载地址进行下载。免费版的Burp Suite会有许多限制,很多的高级工具无法使用,如果您想使用更多的高级功能,需要付费购买专业版。专业版与免费版的主要区别有
本章主要讲述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 安全脉搏整理发布】
本文作者:SP小编
本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/50355.html
~\(≧▽≦)/~赞
@小冰 感谢小冰师傅支持
@小冰 30.burpsuite_intruder功能缺陷的弥补办法,讲一个burpsuite的替代品
http://www.fmpan.com/s/td6a12cd
29.burpsuite抓取注入工具的注入语句学习
http://www.fmpan.com/s/oon6slv6
28.burpsuite的spider爬行功能的3种应用方法的总结,23分钟的实战爬行_
http://www.fmpan.com/s/00ucev23
27、burpsuite实战cookie绕过防注入系统
http://www.fmpan.com/s/dd6ps8yw
26.burp_suite_RFI文件包含漏洞演示
http://www.fmpan.com/s/puf751le
25.Burpsuite教程——通杀的asp、php、aspx一句话木马的暴力破解方法
http://www.fmpan.com/s/xg1kieg7
24、mysql_union与盲注的半自动的渗透测试
http://www.fmpan.com/s/gs5ywuix
23、burp_suite软件常见bug错误与应对办法_如内置浏览器的乱码问题
http://www.fmpan.com/s/ygm07rhn
21、burpsuite——反射型xss跨站的实战检测与利用
http://www.fmpan.com/s/xjrnfdqi
20.burpsuite——完美扫描网站存在的敏感目录,绕过404自定义页面设置
http://www.fmpan.com/s/956m99px
19.burpsuite——跟随302重定向的web破解功能或检测email口令的安全性
http://www.fmpan.com/s/0x718hbd
18、多线程通用提取数据,完美实现get_data功能
http://www.fmpan.com/s/3dyek5q3
17、burp_suite上传漏洞的友情实战渗透演练_已通知网站管理修补漏洞_
http://www.fmpan.com/s/if8b99z9
16、burp_suite批量解密md5
http://www.fmpan.com/s/gvde7km8
15、burp_suite绕过cookie验证码的2种方法
http://www.fmpan.com/s/lnv3a2l9
14、burp_suite多种方法绕过、检测上传漏洞_本地、扩展名_0x00_
http://www.fmpan.com/s/b0zybb6i
13、burpsuite与sqlamp图形版结合的第一种方法
http://www.fmpan.com/s/izqq97kv
12.Burpsuite教程—–Burpsuite_HTTP_Methods测试
http://www.fmpan.com/s/s37jm6q0
11.Burpsuite教程—–Burpsuite修改国外购物站商品价格
http://www.fmpan.com/s/rsol3kuz
10、burpsuite_http与https的fuzz测试
http://www.fmpan.com/s/c8tr9tse
9、Burp_Suite-Intruder_完整教程第一节
http://www.fmpan.com/s/gl7al1n0
8、burp_suite之_options_功能的详细介绍与基本使用
http://www.fmpan.com/s/asvpsze9
7、burp_suite之_comparer功能的详细介绍与基本使用
http://www.fmpan.com/s/jxk5uwsb
6、burp_suite之_decoder_功能的详细介绍与基本使用
http://www.fmpan.com/s/z63r07d6
5、burp_suite之_repeater功能的详细介绍与基本使用
http://www.fmpan.com/s/63if57j1
4、burp_suite之_scanner_功能的详细介绍与基本使用
http://www.fmpan.com/s/lkl68im
3、burp_suite之_spider__功能的详细介绍与基本使用
http://www.fmpan.com/s/weu7tv72
2、Burp_Suite之_proxy___功能的详细介绍与基本使用
http://www.fmpan.com/s/eqvdjbxr
1、Burp_Suite之_target__功能的详细介绍与基本使用
http://www.fmpan.com/s/i3y6ag25
感谢~~~~~~~
@aaaapppprr 客气,欢迎长期关注脉搏,安全脉搏,分享技术,悦享品质。