导语:本博文的主要内容是关于如何利用Burp Suite宏,帮助我们自动化完成需要手动输入payload的模糊测试工作。
本博文的主要内容是关于如何利用Burp Suite宏,帮助我们自动化完成需要手动输入payload的模糊测试工作。尽管许多安全测试人员可能会知道,这篇文章只是为那些尚未利用Burp宏的自动化功能的人所写的。
在我的渗透测试职业生涯中,在Web应用程序中执行参数和页面表单字段的模糊测试处理时,我遇到了一些与会话处理有关的挑战和困难。
在多种情况中,当你进行安全模糊测试时,web应用程序终止会话的行为,可能是因为一些安全策略导致的(例如:服务端获得了不安全的输入,用于注销的会话),或者在其他一些情况中,Burp spider功能或其他的网页爬虫被用于注销页面的参数的模糊测试时也会导致会话终止。
在这种情况下,要实现进一步的扫描,探测和请求都会变得无效。因为你必须重新执行登录操作并建立应用程序的会话。我以前遇到这种情况都是手动操作,这有点麻烦。在尝试找到解决方法时,我正在浏览Burp Suite的一些我不常用的功能,并根据我的好奇心,我注意到了Burp的会话处理功能。在探索了该功能选项并结合一些在线的搜索后,我的想法得到了验证,Burp通过一些基于规则的宏来处理上述挑战或困难。
简单来说,如果是因为模糊测试参数导致了会话终止,那么Burp可以使用凭据自动的登录应用程序,并继续扫描和启动爬虫。
自动化fuzzer需要的东西
1. 我使用的是Burp的免费版本(1.7.21)
2. 任何具有会话处理的网站(我使用经典的demo.testfire.net站点)
步骤1:
下图所显示的网站,具有登录功能:
存在缺陷的网站
步骤2:
此时,我打开设置好浏览器代理,并把Burp的拦截关掉,然后在表单中填写用户名和密码进行登录。
网站登录页面
步骤3:
下图显示的是我们登录网站后进入的页面:
登录字段值会显示登录的用户名
步骤4:
现在为了测试会话处理,我们将此页面请求发送到Burp的repeater选项卡,我们删除请求中的cookie,重放这个登录请求,观察一下因为会话中断而导致会话终止后会发生什么。
重放请求
步骤5:
我们可以看到页面会话是有效的,因为我们有一个正确的会话。下一步中我们尝试删除cookie并再次进行登录请求重放测试。
重放请求标签页
步骤6:
我们可以看到,会话被注销了,我们需要再次登录才可以继续测试。
会话终止
步骤7:
现在使用Burp宏来解决这个会话终止的问题。
Burp菜单导航到:项目选项 ->会话 ->会话处理规则
设置Burp宏
步骤8:
这里我们可以看到有一个默认规则 – 使用来自Burp的cookie jar的cookie。
Burp Cookie Jar
步骤9:
点击添加按钮创建一个新的规则。
添加新的宏规则
步骤10:
选择适合你和规则描述,然后在规则操作中选择“检查会话是否有效”
设定Burp宏的规则说明
步骤11:
单击确定后,将启动会话处理编辑器,显示的都是默认值:发出当前请求。保持不变并向下滚动到“如果会话无效,请执行以下操作:”
宏规则配置设置1
宏规则配置设置2
步骤12:
勾选“如果会话无效,执行下面的操作”并单击“Add”添加宏。此时,你将获得具有所有通过Burp代理的历史记录的宏记录器。单击并选择之前执行登录的那一条请求。最后点击确定。
步骤13:
单击确定后,宏编辑器将启动,你可以使用自定义的名称进行命名,还可以选择模拟宏,重新记录,重新分析这些功能。
宏记录器
步骤14:
在运行一次安全测试之前,配置一些参数来确定burp是否正确捕获了测试参数。
宏记录器参数检查
步骤15:
由于这里进行了全部的设置,所以我们可以执行一个测试宏的运行,点击确定。
步骤16:
现在点击Burp的范围(scope),并将URL范围设置为所有urls/suite scope/custom scope来指示宏在哪里运行。
步骤17:
我在这里设置为包含所有的URL。现在让我们再来测试一下我们的宏。
宏的范围设置
步骤18:
看下图,我们正在尝试访问网站的主页,而且在在repeater选项卡中没有cookies:
步骤19:
一旦我们启用了刚才添加的宏,cookies将自动添加到请求中,页面也将正常加载!
现在让我们来篡改下Cookie的值,检查一下会话是否有效。
执行宏
执行添加了cookie的宏
没毛病,就是这样了。这是一个十分简单的方式,Burp有助于创建基于会话的规则和宏。
我们可以使用我们的测试payload来简单地进行输入字段的模糊测试,来检查XSS,SQLi,IDOR等漏洞。即使应用程序由于测试中间不活动而超时,也可以在自动扫描或手动测试时保护会话免受垃圾输入,个别宏还可以帮助执行已经记录过的操作并将其重放给应用程序!
你可以进一步探索使用cookie jar/burp extender以及许多其他的一些功能选项!