当前位置: 首页 > news >正文

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

http://www.lryc.cn/news/574821.html

相关文章:

  • iwebsec靶场sqli注入(2)
  • Vue3+Spring boot 前后端防抖增强方案
  • 学习记录:DAY33
  • 2025年渗透测试面试题总结-2025年HW(护网面试) 09(题目+回答)
  • HarmonyOS开发基础 --面向鸿蒙的TypeScript基础语法一文入门
  • 大模型本地部署,拥有属于自己的ChatGpt
  • 《仿盒马》app开发技术分享-- 兑换列表展示(68)
  • OSS安全合规实战:金融行业敏感数据加密+KMS自动轮转策略(满足等保2.0三级要求)
  • 如何使用MQTTX软件来进行MQTT协议的测试
  • # Python中等于号的使用
  • 逆向入门(7)汇编篇-mul指令的学习
  • DAY 41 简单CNN
  • 防御OSS Bucket泄露:RAM权限策略+日志审计+敏感数据扫描三重防护
  • DeepSeek智能总结 | 邓紫棋音乐版权纠纷核心梳理
  • 软件工程:从理论到实践,构建可靠软件的艺术与科学
  • 智慧家政数字化小程序开发:重构行业服务生态的创新引擎
  • 代码随想录|图论|01图论基础
  • 医药企业CMO研发管线管理专项介绍
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | MovieApp(电影卡片组件)
  • ArkTS与仓颉开发语言:鸿蒙编程的双子星
  • day41
  • 深入理解 BOM:浏览器对象模型详解
  • IoTDB的基本概念及常用命令
  • 【css】增强 CSS 的复用性与灵活性的Mixins
  • ArkUI-X通过Stage模型开发Android端应用指南(二)
  • 【软考高级系统架构论文】### 论软件系统架构评估
  • linux grep的一些坑
  • 接口自动化测试之 pytest 接口关联框架封装
  • Unity_导航操作(鼠标控制人物移动)_运动动画
  • matplotilb实现对MACD的实战