在日常的渗透测试中,借助漏洞扫描工具,我们可以更高效更快速的发现系统或者服务漏洞。
在本篇,我将给大家介绍一款黑客渗透神器-Burp Suite。
一、前言
Burp Suite的功能我们可以分为核心功能和辅助功能;核心功能包括Target、Proxy、Spider、Scanner、Intruder,辅助功能包括Repeater、Sequencer、Decoder、Comparer,除了这些之外,Burp Suite还有拓展、项目选项,用户选项和警报这些设置或者功能。接下来,我们先来了解一下每个模块的功能。
Target
目标模块用于设置扫描域(target scope)、生成站点地图(sitemap)、生成安全分析。
Proxy代理模块主要用于拦截浏览器的http会话内容。
Spider爬虫模块用于自动爬取网站的每个页面内容,并生成完整的站点地图。
scanner扫描模块用于自动检测漏洞,分为主动扫描和被动扫描。
Intruder入侵模块根据检测到的可能存在的漏洞,调用攻击载荷,对目标进行攻击。入侵模块的原理是根据访问链接中存在的参数或者变量,调用本地词典、攻击载荷对目标进行攻击。
Repeater重放模块用于实现请求重放,通过修改参数进行手工请求回应的调试。
Sequencer序列器模块用于检测参数的随机性,例如密码或者令牌是否可预测,以此判断关键数据是否可被伪造。
Decoder解码器模块用于实现对URL、HTML、Base64、ASCII、二/八/十六进制、哈希等编码转换,并支持多次编码解码操作。
Comparer对比模块用于对两次不同的请求和回应进行可视化对比,以此区分不同参数对结果造成的影响。
Extender拓展模块是burpsuite非常强悍的一个功能,也是它跟其他Web安全评估系统最大的差别。通过拓展模块,可以加载自己开发的、或者第三方模块,打造自己的burpsuite功能。通过burpsuite提供的API接口,目前可以支持Java、Python、Ruby三种语言的模块编写。
Options分为Project/User Options,主要对软件进行全局设置。
Alerts显示软件的使用日志信息。
二、Burp Suite使用指南
Burp Suite可执行程序是Java文件类型的jar文件,分为免费版和专业版。免费版的Burp Suite会有许多限制,无法使用一些高级工具,比如Scanner模块。如果想使用更多的高级功能,需要付费购买专业版。我们使用的是Burp Suite Pro 1.7.13版本,支持全部功能。
2.1、 安装与帮助
由于Burp Suite是用Java语言开发的,运行时依赖JRE,需要安装Java环境才可以运行。所以首先我们需要安装Java环境,大家可以百度搜索JDK,下载安装包然后安装即可。安装完成之后,我们可以通过命令java -version来查看,如果能返回Java版本信息,则说明已经安装正确。注意,在Linux环境,如果进行过系统更新,Java版本比较新,会运行不了Burp Suite,解决方法就是使用旧版本的Java。
下载好的Burp Suite无需安装,直接运行BurpLoader.jar即可。我的Burp Suite是在kali里面运行的,所以直接在路径目录下打开就可以了,如下图所示。
正常打开之后,我们就可以看到Burp Suite的主界面了,如下图所示。
2.2、 代理功能
代理工具用来拦截所有通过代理的网络流量,如客户端的请求数据,服务器端的返回信息等。Burp Suite主要拦截HTTP和HTTPS流量,通过拦截再以中间人的方式对拦截到的信息做各种处理来达到目的。在日常工作中,我们最常用的Web客户端就是Web浏览器,我们可以通过设置代理功能来拦截Web浏览器的流量,Burp Suite默认本地代理端口为8080。具体设置如下图所示。
接下来我们设置Web浏览器代理,我们在这里以Firefox浏览器为例,同一款浏览器的不同版本设置方法基本一致。
代理功能设置好之后,我们通过Burp Suite拦截kali访问OWASP靶机的HTTP流量来具体了解一下代理功能。
我们通过kali的Firefox来访问OWASP靶机:http://10.10.10.131/dvwa,回车之后我们可以看到浏览器一直处于加载状态,这就说明会话被拦截成功了,如下图所示:
接下来我们在Burp Suite里面查看Proxy的intercept,如下图所示:
可以看到intercept里面我们已经拦截到HTTP的get请求包,上面的图片里面我标记出了一些按钮,在这里给大家说一下这些按钮的功能:
Forward:表示将拦截的数据包或修改后的数据包发送至服务器端。
Drop:表示丢弃当前拦截的数据包。
Interception is on:表示开启拦截功能,点击之后变成Interception is off表示关闭拦截功能。
Action:可以将拦截到的数据包发送给其他模块处理,例如Spider、Scanner等模块。
接下来通过点击Forward按钮把拦截到的数据包发送给靶机,我们就可以通过Firefox看到靶机的Web界面了。
2.3、 目标功能
目标模块用于设置扫描域(target scope)、生成站点地图(sitemap)、生成安全分析。该模块最主要功能就是显示信息,它会默认记录浏览器访问的所有页面,可以看到爬虫爬取到的页面以及所有页面的请求和响应信息。
由于Burp Suite默认开启了被动爬虫功能,当我们在访问Web界面的时候,会自动爬行得到该站点地图,所以我们可以直接在Targer里面的Site map里面找到目标站点,鼠标右键,在下拉菜单中选择“Add to scope”,把站点添加进scope,如下图所示:
为了使我们能更加清楚查看目标站点,我们可以通过Filter功能对站点显示进行设置。单击"Filter",选择"Show only in-scope items",只显示scope列表里面的站点,其他站点会被隐藏。"Filter"过滤规则很灵活,大家可以根据不同的类型进行过滤,在这里就不赘述了。
2.4、 爬虫功能
爬虫模块用于自动爬取网站的每个页面内容,并生成完整的站点地图。在这里我们以OWASP的DVWA靶机为例,给大家演示一下如果通过爬虫主动爬取站点地图。
当我们拦截到HTTP的数据包之后,选择"Action"按钮,选择"Send to Spider"发送给爬虫模块,当然还可以在HTTPhistory界面,Site map界面找到对应站点链接发送给爬虫模块,如下图所示:
接下来我们在Spider模块的Control界面就可以看到爬虫状态,如下图所示:
在Options界面我们可以设置爬虫线程,爬行深度,表单提交,被动爬虫功能等规则,大家可以根据自己的需求来自行设置,如下图所示:
三、Burp Suite扩展板块
前面给⼤家介绍了Burp Suite的安装以及目标模块、代理模块、爬⾍模块。接下来我们再聊聊关于Burp Suite的其他模块以及使⽤⽅法。
3.1、扫描功能
扫描模块⽤于⾃动检测漏洞,分为主动扫描和被动扫描。Burp Suite可以对某⼀个URL或者全站进⾏扫描。
如果只需要扫描某⼀个单⼀Web⻚⾯,我们可以通过Intercept将拦截到的请求执⾏"Do an active scan",具体操作如下图所示:
如果需要对全站进⾏扫描,我们可以先通过Spider爬取到站点地图,然后在Target的Site map⾥⾯选择需要扫描的⽬标,⿏标右键右击选择"Actively scan this host",具体操作如下图所示:
点击之后会弹出主动扫描向导,我们可以选择删除不需要扫描的⻚⾯,提升扫描速度。主要包括以下规则:
Remove duplicate items:删除重复选项
Remove items already scanned:删除已扫描选项
Remove out-of-scope items:删除不在scope的选项
Remove items with no parameters:删除没有参数的选项
Remove items with media responses:删除有media响应的选项
Remove items with the following extension:删除有以下扩展名的选项
具体如下图所示:
单击next会显示需要扫描的⻚⾯:
点击OK,则会开始主动扫描。在扫描过程中,如果扫描到登录表单,Burp Suite会提示你输⼊登录信息,可以选择登录,也可以选择放弃。
在Scanner模块,包括五个选项,分别是Issue activity、Scan queue、Live scanning、Issue definitions和Options。
Issue activity:显示扫描到的漏洞信息。
Scan queue:显示扫描任务,可以看到任务扫描状态,发现问题数⽬等信息。
Live scanning:可以看到当前扫描⽅式以及扫描范围。
Issue definitions:问题释义,⽤来对扫描到的问题或者漏洞进⾏描述。
Options:选项,⽤来对Scanner进⾏设置,主要包括五个模块:
Attack Insertion points:参数扫描选项,可以设置URL、cookie等参数。
Active Scanning Engine:主动扫描设置,可以设置主动扫描线程、超时和最⼤请求连接数。
Active Scanning Optimization:主动扫描优化,可以设置主动扫描速度和精准度。
Scan Issue:扫描问题设置,可以设置扫描类型,针对不同问题的扫描强度。
Static Code Analysis:设置可执⾏代码的静态分析的扫描类型。
3.2、⼊侵功能
⼊侵模块根据检测到的可能存在的漏洞,调⽤攻击载荷,对⽬标进⾏攻击。⼊侵模块的原理是根据访问链接中存在的参数或者变量,调⽤本地词典、攻击载荷对⽬标进⾏攻击。
Intruder⼯作原理是在拦截到的请求包中,通过修改请求参数来获取不同的应答。在每⼀次请求中,Intruder通常会携带⼀个或多个有效payload,在不同位置进⾏攻击重放,通过对⽐应答来分析获得需要的信息。Intruder可以实现标识符枚举、模糊测试、SQL注⼊,⽬录遍历等。
接下来我们对OWASP靶机的DVWA登录界⾯通过Intruder实现爆破,字典我们使⽤Burp Suite⾃⽣成的字典。该演示只为了实验,⼤家请勿⽤于其他⾮法操作。具体实现过程如下:
第⼀步:将拦截到的DVWA的登录请求发送到Intruder,如下图所示:
第⼆步:配置Attack type选择攻击类型,分为四种攻击类型:
Sniper:对变量依次进⾏破解
Battering ram:对变量同时进⾏破解
Pitch fork:每个变量使⽤⼀个字典
Cluster bomb:每个变量使⽤⼀个字典,进⾏交集破解
在这⾥我们选择Cluster bomb,如下图所示:
第三步:清除已有参数,重新配置变量。我们先单击Clear按钮清除已有参数,再通过Add按钮重新设置变量,如下图所示:
第四步:设置字典。在Payloads设置⾥⾯,有四个区域:
Payload Sets:有以下两个选项。
Payload set:针对指定变量进⾏配置
Payload type:常⻅的有Simple list(简单列表)、Numbers(数字列表)、Dates(⽇期列表)、Runtime file(运⾏时读取⽂件)。
Payload Options:默认为Simple list,不同设置的Payload type,此字段不同。
Payload Processing:对字典每⾏的字符串进⾏处理,可以进⾏MD5加密,字符串截取,加⼊前缀、后缀等操作。
Payload Encoding:对字符进⾏URL转码。
在这⾥,我们Payload set选择2,Payload type选择Brute force(暴⼒破解),Payload Option设置如下图所示:
第五步:设置Option模块。在此模块中,可以配置请求线程、请求结果集格式等,在本实验中,我们Option使⽤默认配置即可,如下图所示:
第六步:配置完成之后,我们通过点击Start attack进⾏扫描,过程如下图所示:
只要⼤家花时间去等待Intruder扫描,最终是可以得到DVWA登录的⽤户名和密码的。
3.3、重放功能
重放模块⽤于实现请求重放,通过修改参数进⾏⼿⼯请求回应的调试。Repeater属于HTTP请求编辑⼯具,可以随意更改HTTP请求进⾏测试。在这⾥我们仍然对登录DVWA的HTTP请求包通过Repeater进⾏修改,来查看修改后的回复内容,如下图所示:
我们对⽤户名和密码进⾏修改,修改完成之后通过点击go按钮,发送请求给靶机,然后查看回复内容,如下图所示:
3.4、序列器功能
序列器模块是⼀种⽤于分析数据样本随机性质量的⼯具。可以⽤它测试应⽤程序的会话令牌,密码重置令牌是否可预测等场景,通过Sequencer的数据样本分析,能很好地降低这些关键数据被伪造的⻛险。我们仍然使⽤DVWA的登录⻚⾯进⾏测试,如下图所示:
点击Start live capture开始分析,分析过程如下图所示:
3.5、拓展功能
拓展模块是burpsuite⾮常强悍的⼀个功能,也是它跟其他Web安全评估系统最⼤的差别。通过拓展模块,可以加载⾃⼰开发的、或者第三⽅模块,打造⾃⼰的burpsuite功能。通过burpsuite提供的API接⼝,⽬前可以⽀持Java、Python、Ruby三种语⾔的模块编写。我们在BApp Store⾥⾯找到CO2插件安装,然后就可以结合SQLmap来实现SQL注⼊了,这个案例我们后⾯在实战部分再给⼤家演示。
3.6、解码功能
解码器模块⽤于实现对URL、HTML、Base64、ASCII、⼆/⼋/⼗六进制、哈希等编码转换,并⽀持多次编码解码操作。如下图所示:
3.7、对⽐功能
对⽐模块⽤于对两次不同的请求和回应进⾏可视化对⽐,以此区分不同参数对结果造成的影响。我们使⽤两个相同的DVWA主⻚的请求包来做对⽐,给⼤家演示⼀下Comparer功能。先把请求包发送给Comparer模块,如下图所示:
然后在Comparer模块中,通过Word或者Bytes进⾏⽐较,如下图所示:
3.8、选项功能
分为Project/User Options,主要对软件进⾏全局设置。这个可以根据需求⼤家⾃⾏设置,⼀般情况下使⽤默认设置即可。Burp Suite的所有模块我们就介绍完成了,下篇⽂章我们使用Burp Suite进行实战。