译者:blueSky
预估稿费:200RMB
投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿
前言
本文的主要内容是讲述如何通过Burp Suite Macros自动化模糊测试Web应用的输入点以完成渗透测试工作。尽管许多渗透测试人员可能已经知道了Burp Suite Macros的使用方法,但这篇文章是为那些尚不知道如何利用Burp Suite Macros进行自动化模糊测试的人编写的。
在我的渗透测试职业经历中,当对一个Web应用程序中的参数或者页面字段进行fuzz时,我经常会遇到一些与网络会话处理相关的难题。在大多数情况下,可能是由于一些网站的安全防护使得Web应用程序终止了渗透测试的会话。
在这些情况下,进一步的扫描,探测和请求都将变得无效,因此我不得不重新登录以重新建立与Web应用程序的会话连接。以前,我都是手动这样做,手动操作略显麻烦和笨拙。为了避免手动操作带来的麻烦,在尝试寻找解决方法的时候,我注意到了Burp的会话处理功能。
结合对Burp会话处理功能的自我研究以及在网上搜索到的相关资料,我终于找到了解决方法:使用Burp Suite Macros就可以完美处理一些与网络会话处理相关的难题。简单来说,如果在对Web应用程序的某个参数进行fuzz的过程中会话终止了,Burp可以使用凭据自动登录应用程序,并继续扫描和爬取Web应用中的网页。
准备环境
1.Burp Suite工具(文中以Burp Suite 1.7.21版本为例展开介绍)
2. 任何具有会话处理的网站(文中以demo.testfire.net网站为例展开介绍)
具体操作
步骤1:
下图是本文用于渗透测试的Web网站,该网站具有登录功能,具体如下图所示:
存在漏洞的网站
步骤2:
打开burp suite工具的intercept功能,该功能可用于拦截用户在网站上输入登录用户名以及登录密码
网站的登录页面
步骤3:
在网站上输入用户名和密码:
输入用户名和密码
步骤4:
为了测试会话处理,我们将下图中的请求发送给burp suite工具的repeater模块,在测试的过程中如果由于会话中断而导致会话终止,那么我们将会删除cookie,具体如下图所示:
使用burp suite的repeater模块发送请求报文
步骤5:
从下图中可以看到,依赖之前会话的登录凭证,burp suite工具的repeater模块能够和服务器正常进行会话,此刻我们尝试删除cookie并再次测试
会话重放
步骤6:
从下图可以看到会话被注销,因此我们需要再次登录以继续测试。
Cookie失效,会话被终止
步骤7:
下面开始进入本文的正题,使用Burp Macros进行渗透测试。在burp suite工具中依次选择Project Options -> Sessions -> Session Handling Rules,具体如下图所示:
Burp Suite Macros的基本设置
步骤8:
可以看到burp suite中内置了一个默认规则,具体如下图所示:
默认规则集
步骤9:
点击添加按钮创建一个新的规则,具体如下图所示:
给Burp Suite Macros添加规则
步骤10:
给新规则添加一段描述性的信息并在rule actions处选择“Check session is valid”,具体如下图所示:
给规则添加描述性信息
步骤11:
一旦我们单击确定按钮之后,burp suite工具中的会话处理编辑器将启动,并显示默认值“Issue current request”。保留默认值并向下滚动鼠标直到出现“if session is invalid, perform the following action”可选项,具体如下图所示:
规则配置
设置规则配置
步骤12:
勾选”if session is invalid, perform the following action”可选框并单击添加宏。此时,我们获得具有所有代理历史记录的宏记录器(Macro Recorder)。之后,在网站上单击并选择具有登录凭据的页面,在页面上输入登录的用户名和登录密码并点击确定。
步骤13:
单击确定后,Burp Suite Macro 编辑器将启动,我们可以对其使用自定义名称进行命名,还可以选择simulate macro,re-record macro以及re-analyze macro。
宏记录器
步骤14:
在运行测试之前,我们首先需要设置fuzz参数以确定burp suite是否能够正确捕获了与测试参数相关的网络请求,具体如下图所示:
宏记录器参数检查
步骤15:
此刻,关于Burp Suite Macros的全部设置工作已经结束了,因此我们现在可以通过发送一个请求来测试Burp Suite Macros是否能够正常工作。
步骤16:
现在点击“final scope”,并将“URL Scope”设置为all urls / suite scope / custom scope以用来告诉Burp Suite Macros在哪里运行。
步骤17:
在“URL Scope”选项中我选择了“include all URLs”,具体如下图所示。此刻,让我们现在再来对我们上述步骤中设置的Burp Suite Macros进行测试。
Macro的范围设置
步骤18:
通过下图我们可以看到:我们正在尝试访问网站的主页面,而burp suite工具的intercept模块中是没有cookies的,具体请求如下图所示:
步骤19:
一旦我们打开连接,Burp Suite Macros 会将cookies自动添加到我们发出的请求中,进而使得我们可以正常的访问网站页面!下一步我们尝试去篡改Cookie值以检查能否维持之前建立的会话连接,具体如下图所示:
Burp Suite Macros开始执行
通过上图我们可以看到,即使我们篡改了cookie值,我们依然可以对Web应用执行访问操作。至此,通过Burp Suite Macros自动化模糊测试Web应用输入点的工作就大功告成啦!
总结
文中步骤1至步骤19展示了一种简单的方法来告诉初学者如何使用burp suite创建基于规则的会话和macros。burp suite 工具中的Macros是在那些被代理的请求报文经过burp suite发送之前被发送到Web服务器中的一些HTTP的请求(可以是一个HTTP请求,也可以是一系列HTTP请求),一旦Macros请求被执行,最后一个Macro响应中的一系列参数(具体是哪个参数或者哪些参数是要在配置Macros的时候设置的)能够被接下来的请求所携带,然后自动替换经过代理的请求报文中的参数(这个参数值也需要设置),当然这个过程是透明的,我们感觉不到,在proxy的http history中我们也看不到请求报文的修改过程(不过我们可以打开Macros的跟踪日志观察到这一过程),这样我们便可以让burp suite 工具中的intercept 模块请求报文中的cookie(假设是我们需要更新的那个参数)自动更新,从而通过服务端的cookie验证,以达到自动化fuzz的目的。
我们可以使用测试中的payloads 来简单地对网站上的输入字段进行fuzz操作,以检查网站是否存在XSS,SQLi,IDOR等漏洞。即使Web应用程序可能由于网络原因而超时不响应,我们也可以在自动扫描或手动测试时保护会话免受垃圾输入的影响,burp suite macros将帮助我们记录执行的操作并使用凭据自动登录到应用程序中,以继续扫描和爬取Web应用中的网页!