如何利用BurpSuite攻击Web应用

本篇文章为大家展示了如何利用Burp Suite攻击Web应用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

公司主营业务:网站设计、网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出昌江黎族免费做网站回馈大家。

web应用测试综述:

Web应用漏洞给企业信息系统造成了很大的风险。许多web应用程序漏洞是由于web应用程序缺乏对输入的过滤。简而言之Web应用程序利用来自用户的某种形式的输入并且在应用程序中执行了这些信息为其提供内容或者从系统的其他部分获取数据。如果未正确过滤输入攻击者可以发送非标准输入来利用web应用程序。本文将重点讨论burpsuite并介绍如何利用它来评估web应用程序。

Burpsuite综述

Burpsuit有许多功能包括但不限于

  • Interception Proxy:旨在让用户控制发送到服务器的请求。

  • Repeater:快速重复或修改指定请求的能力。

  • Intruder:允许自动化自定义攻击和payload。

  • Decoder:解码和编码不同格式的字符串URL,BASE64,HTML等等。

  • Comparer: 高亮显示不同的请求或响应之间的不同处。

  • Extender: 扩展Burp功能的API接口以及许多通过BApp商店免费提供的扩展。

  • Spider and Discover Content feature:爬取web应用程序上的链接并且可以被用来动态枚举非显式链接的内容来寻找信息。

  • Scanner (Pro Only): 检查web应用程序漏洞XSSSQLi代码注入文件包含等的自动扫描程序。   

入门

Burp的详细帮助文档在下面能找到

http://portswigger.net/burp/help/suite_gettingstarted.html

Burpsuite能通过java -jar命令行加载。你可以通过使用选项“-Xmx”分配你的burp所需内存。

java -jar -Xmx1024m /path/to/burp.jar

像许多拦截代理一样Burp也是通过GUI驱动的但是有一些选项需要通过Extender功能利用命令行启动。

一旦burpsuite启动建议你先在Scope定义好目标主机。你可以在site map控制显示的内容和其他功能。Scope能通过定义目标主机名IP或者网络范围:

Proxy选项卡显示Burp的代理详细信息、intercept选项和HTTP请求历史。在下面你可以看到“Intercept is on” 所以任何从浏览器发出的请求都将必须通过Burp的proxy手动点击forward才能进行
Intercept 功能会截断所有从浏览器发送出来的流量其他扩展如FoxyProxy能用来指定哪个URL和IP是黑名单或白名单这些名单能绕过burp的截断。通过配置好Burp的scope和proxy你可以开始使用你的浏览器和burp浏览web应用程序了如你可以在Site Map目标右键弹出菜单选项。在这个视图中你可以看到web应用的目录结构和资源。通过右击URL或者资源你可以通过几个选项调用其他功能例如Burp的spider功能或者执行主动式扫描
便捷提示为了更容易专注于目标web应用程序你可以点击“Filter”菜单只显示仅仅在范围内的内容
激活Burp的spider功能将爬取web应用的链接默认爬取链接深度为5但是这些选项都是在“spider”选项卡中配置的。一旦你截断web应用程序所有的请求和响应都将在“proxy”选项卡中记录下来。你可以高亮显示一个请求让它脱颖而出并且可以在之后的分析中留下注释

Burp的Engagement Tools

  Burpsuite在它的Engagement Tools 右击目标站点的视图>Engagement Tools 下他提供了大量有用的功能。从这你可以选择“Analysis Target”分析目标这个功能提供给你链接参数和静态、动态内容的计数。了解这些信息对评估目标非常有用。链接、参数、和动态内容越多注入fuzz的点就更多。
 在下面的截图中你可以看到一些其他功能如“Schedule Task”定时任务让你可以定时进行主动扫描。如果客户端想在一天中的某几个小时执行自动化测试这个功能特别有用。

Discovering Unlinked Content发现非显式链接内容

  进行web应用程序测试时将面临到的一个问题是枚举未使用显式链接的内容。这可能是一种很耗时的方式因为它主要依赖暴力猜解来制作请求并且查看服务器上是否存在该资源。举个例子“/tmp/”目录不是在web应用任何一个链接中但是如果发送请求/tmp/目录将得到响应。为了解决这个问题我们有许多其他的选择

  • 利用Burp的Discover Content功能。

  • 利用其它扫描器Niktow3afZAP等来探测一些默认资源。

  • 利用DirBuster或Burp的Intruder功能基于一个固定列表暴力猜解资源。

所有的这些方法都非常耗时并且实际上可能找不到任何东西因此根据测试时间和范围你可以不必让DirBuster 运行一整天。一般情况下当你另外进行手工测试的时候它会自动在后台运行。
 下面是一个例子调用Burp的Discover Content功能尝试动态枚举非显式链接的内容

Burp的Decoder和Comparer(编解码器和对比器)

当你开始测试WEB应用程序时你将发现你经常需要将字符串解码或编码成不同格式。当尝试绕过一些简单的waf的时候非常有用。下面的例子是使用Burp的decoder执行URL编码除此之外还有别的编解码选项。

Burp的Comparer功能让你快速将请求或响应进行比较并且高亮显示它们之间的区别

Burp的Extender扩展

扩展功能提供了强大的API接口开发通过使用脚本语言开发额外的功能。许多扩展是用python编写并且通过Burp的应用商店免费提供使用。有个非常有用的扩展是Carbonator它允许你在命令行中实现brupspider>scan>report的全自动化。

Burp的Intruder暴力破解

另一个选项是利用Burp的intruder功能它可以使用一个请求并且允许用户修改请求定义各种不同的payload注入点。一个常见的用例是迭代请求中的参数值用来查看web应用程序如何响应例如get /product.php?item=1你也许可以使用intruder检查比较一下1-1000响应的不同之处。你还可以将请求的资源作为要修改的位置。下面我们将通过遍历一个目录字典来演示这一点
 1.指定一个请求并且选择“Send to Intruder”这将在“intruder”选项卡下弹出以下窗口。高亮显示区域是在请求中将使用“sniper”payload进行暴力猜解的那部分

2.接下来是payload选项卡你可以加载一个字典进行暴力猜解

3.选择“Intruder > Start Attack”开始攻击。接下来的结果窗口将显示创建的请求和HTTP状态码。正如我们所看到的我们能枚举出一部分spider未发现的其他资源

除了使用Burp建议在后台运行中间扫描程序用来检查一些默认配置和资源。下面是使用Nikto的例子也可以考虑其他扫描工具ZAPw3afGrendal等。正如我们所看到的Nikto发现了更多有趣的东西等待我们去调查如/tmp/和/test/:

在初步的侦察之后我们想开始一个主动式扫描这能让Burp测试已知内容以发现漏洞。主要通过Burp输入内容HTML、javascript、SQL语法、系统命令等进行大量的工作并且监测应用程序如何响应来实现。与任何Web应用程序漏洞扫描器一样Burp会报告一些需要手动验证的报告。要启动一个主动式扫描右击site map上的URL或者资源并选择“Actively scan this host”将会弹出下面主动扫描向导

在Web应用程序的扫描时间可能因Web应用程序而异。在某些情况下Web应用程序的自动扫描时间范围可能从几个小时到几天不等。扫描期间列举的链接计数是潜在的扫描持续时间的一个很好的指标。下面的窗口显示了1515个链接枚举但很少有参数用于测试输入。不带参数的链接将减少Burp对每个链接的请求次数因此扫描时间较短。
 在评估主动扫描网络应用时另一个关键因素是表单提交。当你主动扫描web应用程序时根据web应用程序和向用户提供的功能你可能会生成大量日志故障单作业等。如果不在评估范围内应该密切监视这些情况以防止造成拒绝服务DoS情况。
 扫描开始后可通过跳转到Burp中的“scanner”选项卡来查看结果和状态.

随着开始显示结果你可以开始检查一些结果。

分析扫描结果和手动测试

验证Burp扫描结果确定是否是误报充分了解结果这通常会是一个好主意。从选择发现的结果开始选择如“Cross-site scripting (reflected)”然后选择并查看其请求和响应中影响漏洞评估的详细信息。检查XSS的第一件事就是在浏览器中重复这一个请求然后查看脚本是否运行了。你可以通过右击请求正文部分然后选择“Request in browser”

查看浏览器中的响应对确定标记是否正确非常有用。由于XSS评估结果与在客户端浏览器中执行的代码相关因此选择在依赖于扫描器逻辑之前手工验证发现结果非常重要。
 Burp的另一个常用功能是“Repeater”通常用于验证结果或手动搜索其他结果。只需右键单击请求正文部分并选择“Send to Repeater”

在Repeater界面中你可以修改请求并快速重新发送请求给Web应用程序。

反射型XSS可以通过注入某种HTML / JavaScript的payload进行快速测试该payload解析无需输入进行验证。下面是修改XSS payload简单地“alert”XSS“”的示例

对于反射型XSS的实际应用你可能会利用iframe作为payload与鱼叉式网络钓鱼结合使用。下面是一个示例XSS payload你可以使用它来代替“alert”所以现在它可以加载客户端侧提供的exploit或BeEF挂钩的第三方资源

BeEF是通过使用JavaScript来控制受害者浏览器的强大方法。在上面你可以看到使用XSS漏洞与BeEF相关的受害者浏览器。BeEF提供大量功能在受害者浏览器上执行甚至连接到Metasploit以进行攻击。
 关于Web应用程序的安全性中XSS经常被许多人忽视因为你需要利用其他方法获取最终目标——shell。关于XSS的一点需要注意的是我们已经确定Web应用程序没有正确过滤用户输入并且这可能只是一个引出许多其他漏洞的迹象。
 在下面这种情况我们通过发送到repeater并修改payload并在浏览器中显示响应来验证XSS并展示了如何利用XSS来控制受害者浏览器。Burp扫描结果另一个优点是修改发现结果所联系的风险等级。当分析扫描结果时你将毫无疑问遇见一些False Positive误报情况。因此Burp提供用户修改结果为“False Positive”的能力

Burp能够使用各种payload进行模糊输入但它确实会遗漏一些特定版本的漏洞和配置问题。这对任何工具都很常见因此建议你执行手动测试来验证工具找到的结果并列举Web应用程序中的其他漏洞。

  手动测试的第一步是获取Web应用程序使用的技术。特定的软件和版本信息可能会导致你获取额外的信息以获取可能存在的漏洞或漏洞。Whatweb是一款非常棒的工具能够让你快速了解Web应用程序所使用的技术。下面我们可以看到whatweb的命令行语法和输出

此时我们可能已经在运行完整的Burp扫描之前运行了whatweb但是我们可以从whatweb的输出中看到一些非常有趣的信息。
 在这种情况下我们看到一个ColdFusion Web应用程序它给我们提供了手工测试的一个入手点。现在已经枚举出了ColdFusion检查是否存在管理资源如“/ CFIDE / administrator /”以便判断是否合乎ColdFusion应用的逻辑。

手工测试

  Burp也可以成为在Web应用程序上执行手工测试的好工具。通常这种类型的测试是通过安全评估来进行的并且随着从各种扫描中发现更多信息可以进一步利用手动测试来利用它。关于手工测试的主题可以讲好几本书本博文将重点介绍一些非常基础的内容。当你开始浏览Web应用程序并查看工具输出时请问你自己以下问题
 1.列举并研究所有可能存在的软件版本。ColdFusionWordPressSharePoint等。

  • 研究所有软件版本以检查是否存在已知的漏洞和常见的错误配置

  • 尝试请求与正在使用的技术相关的其他资源这些资源可能不会被Web应用程序显式链接出来。

  2.Web应用程序是否用到了用户输入

  • 查看修改参数值HTTP头字段cookie等以查看Web应用程序的响应方式。

  3.如果你怀疑某个部分的请求出现在屏幕上请测试XSS。因此如果你浏览该页面并注意到你的User-Agent可以直接看见请尝试用一些HTML / JavaScript替换你的User-Agent以测试XSS