Burp Suite使用详解一

澳门新葡亰赌995577 21

Docker中启动LocalDVWA容器,准备DVWA环境。在浏览器地址栏输入http://127.0.0.1,中打开DVWA靶机。自动跳转到了http://127.0.0.1/login.php登录页面。输入默认的用户名密码admin:password登录。单击页面左侧的DVWA
Security,进行安全级别设置,如图3-18所示。

本文由阿德马翻译自国外网站,请尊重劳动成果,转载注明出处

澳门新葡亰赌995577 1

Burp
Suite
是Web应用程序测试的最佳工具之一,其多种功能可以帮我们执行各种任务.请求的拦截和修改,扫描web应用程序漏洞,以暴力破解登陆表单,执行会话令牌等多种的随机性检查。本文将做一个Burp
Suite完全正的演练,主要讨论它的以下特点.
1.代理–Burp
Suite带有一个代理,通过默认端口8080上运行,使用这个代理,我们可以截获并修改从客户端到web应用程序的数据包.

图3-18  DVWA安全级别

2.Spider(蜘蛛)–Burp
Suite的蜘蛛功能是用来抓取Web应用程序的链接和内容等,它会自动提交登陆表单(通过用户自定义输入)的情况下.Burp
Suite的蜘蛛可以爬行扫描出网站上所有的链接,通过对这些链接的详细扫描来发现Web应用程序的漏洞

DVWA的安全级别有4种,分别为Low、Medium、High和Impossible。先选择最低的安全级别,单击Submit按钮确认选择。

3.Scanner(扫描器)–它是用来扫描Web应用程序漏洞的.在测试的过程中可能会出现一些误报。重要的是要记住,自动扫描器扫描的结果不可能完全100%准确.

单击页面左侧的BruteForce按钮,进入暴力破解测试页面,单击View
Source按钮,如图3-19所示。

4.Intruder(入侵)–此功能呢可用语多种用途,如利用漏洞,Web应用程序模糊测试,进行暴力猜解等.

澳门新葡亰赌995577 2

5.Repeater(中继器)–此功能用于根据不同的情况修改和发送相同的请求次数并分析.

图3-19  Low Brute Force源代码

6.Sequencer–此功能主要用来检查Web应用程序提供的会话令牌的随机性.并执行各种测试.

获取的代码如下:

7.Decoder(解码)–此功能可用于解码数据找回原来的数据形式,或者进行编码和加密数据.

<?php

 if( isset( $_GET[ 'Login' ] ) ) {

    // Getusername

    $user =$_GET[ 'username' ];



    // Getpassword

    $pass =$_GET[ 'password' ];

    $pass =md5( $pass );



    // Checkthe database

   $query  = "SELECT * FROM`users` WHERE user = '$user' AND password = '$pass';";

    $result= mysqli_query($GLOBALS["___mysqli_ston"],  $query ) or die( '<pre>' .((is_object($GLOBALS["___mysqli_ston"])) ?mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res =mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );



    if($result && mysqli_num_rows( $result ) == 1 ) {

        //Get users details

       $row    = mysqli_fetch_assoc($result );

       $avatar = $row["avatar"];



        //Login successful

        echo"<p>Welcome to the password protected area {$user}</p>";

        echo"<img src=\"{$avatar}\" />";

    }

    else {

        //Login failed

        echo"<pre><br />Username and/or passwordincorrect.</pre>";

    }



   ((is_null($___mysqli_res =mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);

}
?>

8.Comparer–此功能用来执行任意的两个请求,响应或任何其它形式的数据之间的比较.

  

1)Proxy(代理)

从代码中可以看出,服务器没有对输入的用户名和密码做任何的检查,直接就进行了SQL查询。这种情况用SQL注入也非常的方便,但这里测试的是暴力破解。

代理功能使我们能够截获并修改请求.为了拦截请求,并对其进行操作,我们必须通过Burp
Suite配置我们的浏览器.

浏览器启用SwitchyOmega的Burp Suite模式,启动Burp
Suite监听本地的8080端口。在页面中任意输入一个用户名和密码,如图3-20所示。

 

澳门新葡亰赌995577 3

澳门新葡亰赌995577 4

图3-20  DVWA发送数据到Burp Suite

一旦在浏览器上设置好之后,就打开Burp
Suite,去Proxy项进行Intercept(截断),需要确保intercept is on.

关闭浏览器其他的标签页,避免干扰。启动Burp
Suite,打开Proxy标签页的Intercept项,将项目按钮调整成Intercept is
on,如图3-21所示。

 

澳门新葡亰赌995577 5

澳门新葡亰赌995577 6

图3-21  Burp Suite拦截

 

回到DVWA页面中,单击Login按钮。浏览器向服务器127.0.0.1发送数据,通过127.0.0.1:8080端口,被Burp
Suite拦截。Burp Suite显示拦截下来的数据,如图3-22所示。

打开alerts标签,可以看到代理正运行在8080端口.我们可以在Proxy–>options下来修改这个配置.

澳门新葡亰赌995577 7

澳门新葡亰赌995577 8

图3-22  拦截的数据

打开Proxy下的options标签

在Raw的文本框中单击鼠标邮件,在弹出的菜单中选择Send toIntruder选项,Burp
Suite将拦截得到的数据发送给了Intruder,进行选择、分析,如图3-23所示。

澳门新葡亰赌995577 9

澳门新葡亰赌995577 10

 

图2-23  Send Data to Intruder

澳门新葡亰赌995577,在这里我们可以编辑代理正在监听的端口,甚至添加一个新的代理监听.Burp也有向SSL保护网站提交证书的选项.默认情况下,Burp创建一个自签名的证书之后立即安装.”generate
CA-signed per-host
certificates”选项选中之后Burp的证书功能将生成一个我们能够链接的证书签署的特定主机.在这里我们关心的唯一事情是,当一个用户链接到一个SSL保护的网站时,能后减少网站警告提示的次数.

单击Burp
Suite的Intruder标签,选择Positions项目。这里是暴力破解的主战场,可以看到Intruder已经将页面发送数据中所有可爆破的参数都标示出来了,如图2-24所示。

如果我们不选中”listen on loopback interface only”选项,意味着Burp
Proxy可以作为一个网络上其它系统的代理。这意味着在同一网络中的任何计算机都可以使用Burp
Proxy功能成为代理,并中继通过它的流量.

澳门新葡亰赌995577 11

“support invisible proxying for non-proxy-aware
client”选项是用于客户端不知道他们使用的是代理的情况下.这意味着代理设置不是设置在浏览器,有时候设置在hosts文件中.在这种情况下,和将代理选项设置在浏览器本身所不同的是Burp需要知道它是从一个非代理客户端接收流量的.”redirect
to host”和”redirect to
port”选项将客户端重定向到我们在该选项后设置的主机和端口。

图2-24  Intruder项目

澳门新葡亰赌995577 12

这里所有标示出来的参数都是可以用于暴力破解的。实际上只需要暴力破解username和password这两个参数就可以。单击Clear$按钮。清除所有备选目标,然后选择需要暴力破解的两个参数username和passowrd,单击Add$按钮,将这两个攻击目标的参数标示起来,如图2-25所示。

同样,我们可以拦截请求,并根据我们指定的规则返回响应.

澳门新葡亰赌995577 13

澳门新葡亰赌995577 14
这里有个选项用来修改从响应中接收到的html网页。我们可以取消隐藏的表单字段,删除javascript等。还有一个选项用自定义字符串替换掉寻找到的特定的模式.我们需要用指定正则表达式。Burp将解析请求或者响应以期望能够寻找到这种模式,将会用自定义的字符串来替换它.

图3-25  选择暴力破解目标

澳门新葡亰赌995577 15

再来看看Intruder项目的攻击模式Attack
type。Intruder的攻击模式有4种。分别为Sniper、Battering
ram、pitchfork、Cluster Bomb模式。

 

Sniper是狙击模式,这种模式适合单一的目标参数破解。以本次破解为例,如果已知了用户名username,那就只需要暴力破解密码password就可以了。这就是单一的目标参数破解。只需要给一个字典,Intruder就用这个字典中的所有密码测试一遍。假设已给出密码字典为[a,
b, c, d],破解方式为:

2)Spider(抓取)

Password

-------------

 a

 b

 c

 d

Burp
Spider用来映射Web应用程序.它会自动抓去Web应用程序的链接,提交它发现的所有登陆表单,从而详细的分析整个应用程序.这些链接会传递给Burp
Scanner,进行详细的扫描.在这种情况下,我们将使用上DVWA(Damn Vulnerable Web
Application).只是需要DVMA使用你的浏览器,确保Burp Suite上的inerrcept is
on,并且得到Brup截取的请求,右键单击拦截的请求,选择”Send to
Spider”发送给蜘蛛.

  

澳门新葡亰赌995577 16

Battering
ram是撞击模式,这种模式不管有多少个目标参数破解,都只用一个密码字典。以本次破解为例,有两个目标参数需要破解,Intruder将密码字典中的密码同时给这两个目标,假设已给出密码字典为[a,
b, c, d],破解方式为:

接下来会弹出一个警告弹窗让我们”add item to
scope(添加项目到作用域)”.点击”Yes”.一个范围将在我们运行的测试目标上定义好.

username | password

a  | a

b  | b

c  | c

d  | d

澳门新葡亰赌995577 17

Pitchfork是交叉模式,这种模式中有多少个目标参数,就需要给多少个密码字典。以本次破解为例,有两个目标参数需要破解。假设给出的2个字典分别包含的是[1,
2]和[a, b, c, d]。Intruder将破解2次,破解方式为:

我们能够在site
map–>target标签看到一个url已经添加进作用域.我们也能看到一些其它的目标已经在目标列表中添加好了.Burp会自动使用代理浏览我们定义好的目标网页.我们可以使用单击右键–>”add
item to scope(添加项目到作用域)”添加任何项目到我们的作用域.

username | password

1  | a

 2  | b

澳门新葡亰赌995577 18

Cluster
bomb是集束炸弹模式,这种模式的中有多少目标参数,就需要多少个密码字典。以本次破解为例,有两个目标参数需要破解。假设给出的2个字典分别包含的是[1,
2]和[a, b, c, d]。破解方式为:

进入Scope标签,我们能够看到DVWA应用已经添加到作用域.

username | password

1  | a

1  | b

1  | c

1  | d

2  | a

2  | b

2  | c

2  | d

澳门新葡亰赌995577 19

  本次破解有2个目标参数username和password,需要2个字典。选择Cluster
bomb模式,如图3-26所示。

接下来我们进入Spider标签,点击”options(选项)”,我们可以设置各种选项当运行Burp检测应用程序的时候.我没有可以让Burp检查robotx.txt文件(check
for the
robots.txt),它会尝试抓去网站管理员不允许搜索引擎索引的目录.另外一个重要的选项是”passively
spider as you browse(被动蜘蛛浏览)”。基本上Burp
Spider可以以被动和主动模式运行,选择这个就要求Burp
Spider保持新的内容和链接进行扫描,因为我们浏览应用程序的时候使用了Burp
proxy。

澳门新葡亰赌995577 20

澳门新葡亰赌995577 21

图3-26  Attack Type

另外一个重要的选项是”application login(应用程序登陆)”.一旦Burp
Spider提交一个登陆表单的时候就开始爬行(抓取).它可以自动提交我们提供给它的证书.我们同样可以设置admin/password凭证,设置好之后,他们会做为DVWA中的凭证.因此Burp
Spider可以自动提交那些信息凭证,并且保持爬行抓取的状态希望能够获得更多的新的信息.你也可以在thread(线程)项来修改线程数.