http://p8.qhimg.com/t01e3b2042b291bc055.jpg

 


前言


本文的主要内容是讲述如何通过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网站,该网站具有登录功能,具体如下图所示:

t01e7a892a3a26069a9.png

存在漏洞的网站

步骤2:

打开burp suite工具的intercept功能,该功能可用于拦截用户在网站上输入登录用户名以及登录密码

t01264b2ce0f6e9b381.png

网站的登录页面

步骤3:

在网站上输入用户名和密码:

t01e0701d056d20daad.png

输入用户名和密码

步骤4:

为了测试会话处理,我们将下图中的请求发送给burp suite工具的repeater模块,在测试的过程中如果由于会话中断而导致会话终止,那么我们将会删除cookie,具体如下图所示:

t01450bc0e28a23473a.png

使用burp suite的repeater模块发送请求报文

步骤5:

从下图中可以看到,依赖之前会话的登录凭证,burp suite工具的repeater模块能够和服务器正常进行会话,此刻我们尝试删除cookie并再次测试

t018a1548c02da12a28.png

会话重放

步骤6:

从下图可以看到会话被注销,因此我们需要再次登录以继续测试。

t01394b4dc65aa8d71a.png

Cookie失效,会话被终止

步骤7:

下面开始进入本文的正题,使用Burp Macros进行渗透测试。在burp suite工具中依次选择Project Options -> Sessions -> Session Handling Rules,具体如下图所示:

t0137c8745d9c4e69c6.png

Burp Suite Macros的基本设置

步骤8:

可以看到burp suite中内置了一个默认规则,具体如下图所示:

t018026af9afc717d6a.png

默认规则集

步骤9:

点击添加按钮创建一个新的规则,具体如下图所示:

t01797c1af9c74c5a7f.png

给Burp Suite Macros添加规则

步骤10:

给新规则添加一段描述性的信息并在rule actions处选择“Check session is valid”,具体如下图所示:

t013ebfc86e6fbee00f.png

给规则添加描述性信息

步骤11:

一旦我们单击确定按钮之后,burp suite工具中的会话处理编辑器将启动,并显示默认值“Issue current request”。保留默认值并向下滚动鼠标直到出现“if session is invalid, perform the following action”可选项,具体如下图所示:

t014371085682ca5acd.png

规则配置

t016e74f6df5e8d7d43.png

设置规则配置

步骤12:

勾选”if session is invalid, perform the following action”可选框并单击添加宏。此时,我们获得具有所有代理历史记录的宏记录器(Macro Recorder)。之后,在网站上单击并选择具有登录凭据的页面,在页面上输入登录的用户名和登录密码并点击确定。

步骤13:

单击确定后,Burp Suite Macro 编辑器将启动,我们可以对其使用自定义名称进行命名,还可以选择simulate macro,re-record macro以及re-analyze macro。

t017700ef475a99aa8f.png

宏记录器

步骤14:

在运行测试之前,我们首先需要设置fuzz参数以确定burp suite是否能够正确捕获了与测试参数相关的网络请求,具体如下图所示:

t0190d6a878b761f120.png

宏记录器参数检查

步骤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进行测试。

t017e3d80460b5f38f7.png

Macro的范围设置

步骤18:

通过下图我们可以看到:我们正在尝试访问网站的主页面,而burp suite工具的intercept模块中是没有cookies的,具体请求如下图所示:

t0158d2219ab583f32f.png

步骤19:

一旦我们打开连接,Burp Suite Macros 会将cookies自动添加到我们发出的请求中,进而使得我们可以正常的访问网站页面!下一步我们尝试去篡改Cookie值以检查能否维持之前建立的会话连接,具体如下图所示:

t019661aed694a42669.png

Burp Suite Macros开始执行

t01f7cba547cc0f09df.png

通过上图我们可以看到,即使我们篡改了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应用中的网页!



本文由 安全客 翻译,作者:blueSky

原文链接:http://blog.securelayer7.net/automating-web-apps-input-fuzzing-via-burp-macros/