DVWA Brute Force 漏洞分析与利用指南

DVWA简介

DVWA(Damn Vulnerable Web Application)是一个基于PHP/MySQL的脆弱性Web应用平台,专为安全专业人员设计,用于测试技能和工具。它包含十大安全模块,其中Brute Force(暴力破解)是最基础也是最常见的攻击方式之一。

DVWA 1.9版本提供四种安全级别:Low、Medium、High和Impossible,通过比较不同级别的代码差异,安全人员可以深入理解Web安全防护的演进过程。

Brute Force攻击概述

暴力破解是指攻击者通过系统化的密码尝试获取合法用户凭证的方法。这种攻击方式在2014年12306"撞库"事件中造成了广泛影响。

各安全级别分析与利用

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 = 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
    $html .= "<p>Welcome to the password protected area {$user}</p>";
    $html .= "<img src=\"{$avatar}\" />";
  }
  else {
    // Login failed
    $html .= "<pre><br />Username and/or password incorrect.</pre>";
  }
​
  ((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);
}
​
?>

漏洞特征:

  • 无任何防爆破机制

  • 未对输入参数进行过滤,存在SQL注入漏洞

  • 使用GET方法传输敏感数据

漏洞利用方法:

  1. Burp Suite爆破:

    • 拦截登录请求

    • 发送至Intruder模块

    • 设置密码字段为攻击点

    • 载入字典开始攻击

    • 通过响应长度差异识别正确密码

2.SQL注入绕过:

  • 用户名:admin'or'1'='1

  • 密码:任意

  • 或使用:admin'#

Medium级别

代码改进:

$user = mysqli_real_escape_string($_GET['username']);
$pass = md5(mysqli_real_escape_string($_GET['password']));

安全增强:

  • 使用mysqli_real_escape_string过滤特殊字符

  • 密码进行MD5哈希处理

  • 添加了2秒延迟响应

漏洞利用:

  • SQL注入基本被防御

  • 仍可使用Burp Suite爆破,方法与Low级别类似

  • 因仅有2秒固定延迟,爆破依然可行

High级别

安全增强:

checkToken($_REQUEST['user_token'], $_SESSION['session_token'], 'index.php');
// ...
sleep(rand(0,3));

防护机制:

  • 引入Anti-CSRF token

  • 随机延迟(0-3秒)

  • 双重输入过滤(stripslashes+mysql_real_escape_string)

漏洞利用挑战:

  • 传统爆破工具失效

  • 需要处理动态token

Impossible级别

终极防护措施:

$total_failed_login = 3;
$lockout_time = 15;
$account_locked = false;
​
// 检查失败登录次数
if(($data->rowCount() == 1) && ($row['failed_login'] >= $total_failed_login)){
    $timeout = strtotime("{$last_login}+{$lockout_time} minutes");
    if(time() <= $timeout) $account_locked = true;
}
​
// 使用PDO预处理语句
$data = $db->prepare('SELECT * FROM users WHERE user=:user AND password=:password LIMIT 1;');
$data->bindParam(':user', $user, PDO::PARAM_STR);

安全机制:

  1. 账户锁定策略(3次失败尝试后锁定15分钟)

  2. PDO预处理语句彻底防御SQL注入

  3. 完善的登录失败处理流程

  4. 随机延迟响应

防护建议

  1. 实施账户锁定机制

  2. 使用CAPTCHA验证码

  3. 强制使用强密码策略

  4. 采用多因素认证

  5. 使用预处理语句防御SQL注入

  6. 记录并监控登录尝试

  7. 设置合理的延迟响应

总结

DVWA的Brute Force模块展示了从完全无防护到企业级防护的完整演进路径。安全人员通过分析各级别代码差异,可以深入理解Web认证安全的核心要点。在实际环境中,建议至少采用High级别的防护措施,对于关键系统应实现Impossible级别的全方位保护。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KPX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值