DVWA-Brute Force
字数 1353 2025-08-11 17:39:47

DVWA Brute Force漏洞分析与防御教学文档

1. Brute Force基础概念

暴力破解(Brute Force)是一种通过系统地尝试所有可能的组合来破解密码或密钥的攻击方法。在Web应用中,通常针对登录页面尝试不同的用户名和密码组合。

2. DVWA Brute Force漏洞分析

2.1 Low级别漏洞分析

代码特征

if( isset( $_GET[ 'Login' ] ) ) {
    $user = $_GET[ 'username' ];
    $pass = $_GET[ 'password' ];
    $query = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';";
    $result = mysql_query( $query );
}

漏洞点

  1. 无防爆破机制
  2. 对username和password参数无任何过滤
  3. 存在明显的SQL注入漏洞

攻击方法

方法一:Burp Suite爆破

  1. 使用Intruder模块
  2. 添加标识符
  3. 设置payload
  4. 设置线程并发起爆破
  5. 通过返回信息长度差异识别成功组合

方法二:SQL注入

  • 用户名输入:admin' 可触发报错
  • 有效注入语句:
    • admin' or '1'='1
    • admin' #

2.2 Medium级别漏洞分析

代码改进

$user = mysql_real_escape_string( $user );
$pass = mysql_real_escape_string( $pass );
$pass = md5( $pass );

防御措施

  1. 使用mysql_real_escape_string转义特殊字符
  2. 密码进行MD5校验

剩余风险

  1. 防爆破机制不足(仅使用sleep(2))
  2. MySQL 5.5.37以下版本若设置为GBK编码可能绕过转义

攻击方法

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

2.3 High级别漏洞分析

新增防御

  1. 加入Anti-CSRF token
  2. 每次登录需提交随机user_token
  3. 服务器优先检查token再进行SQL查询
  4. 使用stripslashesmysql_real_escape_string双重过滤

攻击方法

方法一:Python脚本爆破

from bs4 import BeautifulSoup
import requests

# 获取token
def get_target_token(requrl, header):
    response = requests.get(url=requrl, headers=header)
    soup = BeautifulSoup(response.text, "html.parser")
    return soup.find_all('input')[3].get('value')

# 爆破流程
for line in open("password.txt"):
    requrl = "http://target/vulnerabilities/brute/index.php" + 
             "?username=admin&password=" + line.strip() + 
             "&Login=Login&user_token=" + user_token
    user_token = get_target_token(requrl, header)

方法二:Burp Suite爆破

  1. 使用Pitchfork模式
  2. 添加密码和token两个变量
  3. 线程数设为1(因token单次有效)
  4. 使用GREP-Extract提取token
  5. 设置递归搜索(Recursive grep)获取新token

2.4 Impossible级别分析

完善防御

  1. 账户锁定机制:检测到频繁错误登录后锁定账户
  2. 使用PDO(PHP Data Object)防御SQL注入
  3. 预处理语句防止SQL注入

3. 防御措施总结

3.1 基础防御

  1. 账户锁定机制
  2. 验证码(CAPTCHA)
  3. 登录延迟
  4. 限制尝试次数

3.2 进阶防御

  1. 多因素认证
  2. 密码复杂度要求
  3. 使用安全的密码哈希算法(如bcrypt)
  4. HTTPS加密传输

3.3 代码层面

  1. 使用预处理语句(PDO)
  2. 输入验证和过滤
  3. CSRF token保护
  4. 安全的会话管理

4. 实验环境搭建建议

  1. 使用DVWA(Damn Vulnerable Web Application)
  2. 配置不同安全级别
  3. 使用Burp Suite Community Edition
  4. 准备常用密码字典

5. 法律与道德注意事项

  1. 仅限授权测试
  2. 遵守当地法律法规
  3. 获取书面授权
  4. 不进行实际破坏性测试

6. 扩展学习资源

  1. OWASP Top 10
  2. Web应用安全测试指南
  3. Burp Suite官方文档
  4. SQL注入高级技巧

通过本教学文档,您应该全面了解了DVWA中Brute Force漏洞的各级别差异、攻击方法和防御措施。请务必在合法授权范围内进行安全测试,并将这些知识用于提高Web应用安全性。

DVWA Brute Force漏洞分析与防御教学文档 1. Brute Force基础概念 暴力破解(Brute Force)是一种通过系统地尝试所有可能的组合来破解密码或密钥的攻击方法。在Web应用中,通常针对登录页面尝试不同的用户名和密码组合。 2. DVWA Brute Force漏洞分析 2.1 Low级别漏洞分析 代码特征 : 漏洞点 : 无防爆破机制 对username和password参数无任何过滤 存在明显的SQL注入漏洞 攻击方法 : 方法一:Burp Suite爆破 使用Intruder模块 添加标识符 设置payload 设置线程并发起爆破 通过返回信息长度差异识别成功组合 方法二:SQL注入 用户名输入: admin' 可触发报错 有效注入语句: admin' or '1'='1 admin' # 2.2 Medium级别漏洞分析 代码改进 : 防御措施 : 使用 mysql_real_escape_string 转义特殊字符 密码进行MD5校验 剩余风险 : 防爆破机制不足(仅使用sleep(2)) MySQL 5.5.37以下版本若设置为GBK编码可能绕过转义 攻击方法 : 仍可使用Burp Suite爆破,方法与Low级别相同 2.3 High级别漏洞分析 新增防御 : 加入Anti-CSRF token 每次登录需提交随机user_ token 服务器优先检查token再进行SQL查询 使用 stripslashes 和 mysql_real_escape_string 双重过滤 攻击方法 : 方法一:Python脚本爆破 方法二:Burp Suite爆破 使用Pitchfork模式 添加密码和token两个变量 线程数设为1(因token单次有效) 使用GREP-Extract提取token 设置递归搜索(Recursive grep)获取新token 2.4 Impossible级别分析 完善防御 : 账户锁定机制:检测到频繁错误登录后锁定账户 使用PDO(PHP Data Object)防御SQL注入 预处理语句防止SQL注入 3. 防御措施总结 3.1 基础防御 账户锁定机制 验证码(CAPTCHA) 登录延迟 限制尝试次数 3.2 进阶防御 多因素认证 密码复杂度要求 使用安全的密码哈希算法(如bcrypt) HTTPS加密传输 3.3 代码层面 使用预处理语句(PDO) 输入验证和过滤 CSRF token保护 安全的会话管理 4. 实验环境搭建建议 使用DVWA(Damn Vulnerable Web Application) 配置不同安全级别 使用Burp Suite Community Edition 准备常用密码字典 5. 法律与道德注意事项 仅限授权测试 遵守当地法律法规 获取书面授权 不进行实际破坏性测试 6. 扩展学习资源 OWASP Top 10 Web应用安全测试指南 Burp Suite官方文档 SQL注入高级技巧 通过本教学文档,您应该全面了解了DVWA中Brute Force漏洞的各级别差异、攻击方法和防御措施。请务必在合法授权范围内进行安全测试,并将这些知识用于提高Web应用安全性。