• 《11招玩转网络安全》之第三招:Web暴力破解-Low级别


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

    图3-18  DVWA安全级别

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

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

    图3-19  Low Brute Force源代码

    获取的代码如下:

    <?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);
    
    }
    ?>
    

      

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

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

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

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

    图3-21  Burp Suite拦截

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

    图3-22  拦截的数据

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

    图2-23  Send Data to Intruder

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

    图2-24  Intruder项目

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

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

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

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

    Password
    
    -------------
    
     a
    
     b
    
     c
    
     d
    

      

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

    username | password
    
    a  | a
    
    b  | b
    
    c  | c
    
    d  | d
    

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

    username | password
    
    1  | a
    
     2  | b
    

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

    username | password
    
    1  | a
    
    1  | b
    
    1  | c
    
    1  | d
    
    2  | a
    
    2  | b
    
    2  | c
    
    2  | d
    

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

    图3-26  Attack Type

    单击Payloads标签,为目标设置字典。第一个目标参数是username,用户名一般就是[root, admin, administrator],将这几个用户名输入到第一个目标参数的密码字典中去,如图3-27所示。

    图3-27  输入用户名到字典

    第2个目标参数是password,将创建的weak_top25.txt文件作为密码字典就可以了,如图3-28所示。

    图3-28  载入文件作密码字典

    所有设置完毕后,单击Startattack按钮开始破解。最后得到的结果如图3-29所示。

    图3-29  Low安全级别的破解

    Length是从服务器返回数据的长度。只有一个长度与众不同,那这个用户名和密码必定是正确的。测试一下,回到DVWA的Brute Force项目,输入用户名和密码admin:password,单击Login按钮,返回的结果如图3-30所示。

    图3-30  测试结果

    验证用户名密码可用。暴力破解成功。

    有兴趣的欢迎一起读这本书《11招玩转网络安全——用Python,更安全》

  • 相关阅读:
    c++内存管理5-虚拟内存4区结构图
    C++内存管理5-处理new分配内存失败情况(转)
    C++内存管理4-Windows编程中的堆管理(转)
    C++内存管理3-探讨C++内存和回收
    C++内存管理2-内存泄漏
    VS2015远程调试
    C++内存管理1-64位系统运行32位软件会占用更多的内存吗?
    ffmpeg安装步骤
    golang字符串拼接
    如何严格设置php中session过期时间
  • 原文地址:https://www.cnblogs.com/liqiang001/p/9286302.html
Copyright © 2020-2023  润新知