DVWA操作手册(一)爆破,命令注入,CSRF

这篇博客介绍了DVWA(Damn Vulnerable Web Application)的安全特性,包括Brute Force(爆破)的low、medium、high三个难度级别的攻击手段与防范措施,Command Injection(命令注入)的漏洞利用与防护,以及CSRF(Cross-Site Request Forgery)在low、medium、high三种难度下的攻防策略。文章详细分析了各个级别下的源码,提供了具体的攻击和防御示例。
摘要由CSDN通过智能技术生成

一、 DVWA 部署

phpstudy+mysql
配置完成可直接访问IP:80

二、DVWA使用手册

2.1 Brute Force(爆破)
2.1.1 low难度

low
一个简易登录界面

<?php
if( isset( $_GET[ 'Login' ] ) ) {
   
    // Get username
    $user = $_GET[ 'username' ];
    // Get password
    $pass = $_GET[ 'password' ];
    $pass = md5( $pass );
    // Check the database
    $query  = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';";
    $result = mysql_query( $query ) or die( '<pre>' . mysql_error() . '</pre>' );
    if( $result && mysql_num_rows( $result ) == 1 ) {
   
        // Get users details
        $avatar = mysql_result( $result, 0, "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 password incorrect.</pre>";
    }
    mysql_close();
}
?> 

服务器只是验证了参数Login是否被设置(isset函数在php中用来检测变量是否设置,该函数返回的是布尔类型的值,即true/false),没有任何的防爆破机制,且对参数username、password没有做任何过滤,存在明显的sql注入漏洞。

在这里插入图片描述长度判断
输入后,login抓包,send to Intruder。选择password的值为payload positions;payload Options导入自己的爆破字典,进行爆破。
分析响应的长度,明显密码就是password。

方法二:可通过sql注入方式直接绕过 admin’ or ‘1’ ='1

在这里插入图片描述

2.1.2 Medium难度

与前者的区别时过滤了万能密码中的特殊字符,故只能进行Burp 爆破
同时由于增加了sleep(2)的原因,爆破速度会比较慢
在这里插入图片描述

2.1.3 high难度
  1. 将登录请求进行拦截,发现增加了user_token参数,所以爆破要选择两个参数来进行,先将请求发送到intruder。
    在这里插入图片描述

  2. 设置两个参数 password和user_token为变量,攻击类型选择pitchfork,意思是草叉模式(Pitchfork )——它可以使用多组Payload集合,在每一个不同的Payload标志位置上(最多20个),遍历所有的Payload。举例来说,如果有两个Payload标志位置,第一个Payload值为A和B,第二个Payload值为C和D,则发起攻击时,将共发起两次攻击,第一次使用的Payload分别为A和C,第二次使用的Payload分别为B和D。
    在这里插入图片描述

3.设置参数,在option选项卡中将攻击线程thread设置为1,因为Recursive_Grep模式不支持多线程攻击,然后选择Grep-Extract,意思是用于提取响应消息中的有用信息,点击Add,如下图进行设置,最后将Redirections设置为Always

在这里插入图片描述在这里插入图片描述

  1. 然后设置payload,第一个参数设置不在赘述,第二个参数选择Recursive grep,然后将options中的token作为第一次请求的初始值。
    在这里插入图片描述

  2. 点击start attack攻击爆破,结果成功爆破,如下图所示
    在这里插入图片描述

  3. 查看 High级别的源码,看以看出做了CSRF防御,但是并未做限制频次或锁定账号机制,所以增加了爆破难度,但是依然可以爆破。

<?php 
 
if( isset( $_GET[ 'Login' ] ) ) {
    
    // Check Anti-CSRF token 
    checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' ); 
    // Sanitise username input 
    $user = $_GET[ 'username' ]; 
    $user = stripslashes( $user ); 
    $user = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $user ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : "")); 
    // Sanitise password input 
    $pass = $_GET[ 'password' ]; 
    $pass = stripslashes( $pass ); 
    $pass = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $pass ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : "")); 
    $pass = md5( $pass ); 
    // Check database 
    $query  = "SELECT * FROM
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值