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级别的全方位保护。

### DVWA Brute Force 暴力破解 实验教程 #### Low 和 Medium 级别暴力破解 对于低级别和中级别的暴力破解,由于这些级别的防护措施较为简单,可以利用工具如Burp Suite来进行自动化攻击。具体来说: - **Low Level**: 这一等级几乎没有任何安全机制来阻止暴力破解尝试。用户名和密码通过HTTP GET请求发送,并且没有验证码或登录失败后的延迟处理。因此,使用Burp Intruder模块并加载常用弱口令列表可以直接发起大量猜测尝试[^4]。 ```bash # 使用 Burp Suite 的步骤如下: 1. 启动浏览器代理设置指向本地监听端口8080; 2. 访问DVWA网站并通过拦截功能捕获登录表单提交的数据包; 3. 将数据包转发至Intruder面板配置参数位置(通常为username和password字段); 4. 加载预定义的字典文件作为payload选项; 5. 开始攻击过程观察返回结果寻找有效凭证组合。 ``` - **Medium Level**: 中级增加了简单的防御手段——每当验证不成功时会触发`sleep(2)`函数使响应时间延长两秒钟。尽管如此,这并不会显著影响实际操作中的成功率;只需耐心等待每次迭代完成即可继续测试其他候选值[^2]。 #### High 和 Impossible 级别暴力破解 随着保护强度增加到了高级阶段,则引入了更复杂的逻辑用于检测异常行为模式以及采取相应对策加以遏制潜在威胁活动的发生频率及其效率表现形式上有所区别于之前所描述过的简易型方案设计思路框架结构特点方面存在差异之处在于: - **High Level**: 此处不仅限定了最大重试次数还加入了基于IP地址白名单管理策略从而进一步提升了整体安全性水平线以上述两点为核心要素构建而成的一套综合性的访问控制体系架构模型实例化应用案例研究对象之一即为此版本下的用户认证流程环节部分实现细节说明文档记录内容摘要概述。 - **Impossible Level**: 几乎无法被传统意义上的穷举法攻破。该层面上除了继承自高阶版的安全特性外更是额外集成了诸如图形验证码之类的交互式组件用来增强人工干预成分比例进而达到更好的防伪效果目的所在[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值