DVWA 靶场部署

DVWA(Damn Vulnerable Web Application)是专为学习 Web 安全设计的漏洞靶场,涵盖 SQL 注入、XSS、CSRF、文件上传、命令注入等常见漏洞,分低/中/高三个难度等级。

1. 环境要求

  • Web 服务器:Apache/Nginx + PHP 7.x + MySQL
  • PHP 版本建议 7.4(太高可能不兼容)
  • 关闭 PHP 安全模式(safe_mode = Off

2. 安装部署

2.1 下载源码


cd /var/www/html
git clone https://github.com/digininja/DVWA.git
cd DVWA

2.2 配置数据库


# 登录 MySQL,创建数据库和用户
mysql -u root -p

CREATE DATABASE dvwa DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'dvwa'@'localhost' IDENTIFIED BY 'dvwa_password';
GRANT ALL PRIVILEGES ON dvwa.* TO 'dvwa'@'localhost';
FLUSH PRIVILEGES;
EXIT;

2.3 配置 DVWA


# 复制配置文件
cp config/config.inc.php.dist config/config.inc.php

# 修改数据库连接信息
vi config/config.inc.php

$_DVWA[ 'db_server' ]   = '127.0.0.1';
$_DVWA[ 'db_database' ] = 'dvwa';
$_DVWA[ 'db_user' ]     = 'dvwa';
$_DVWA[ 'db_password' ] = 'dvwa_password';

2.4 PHP 配置调整


vi /etc/php/7.4/apache2/php.ini

# 修改以下配置
allow_url_fopen = On
allow_url_include = On
file_uploads = On

2.5 启动服务


systemctl restart apache2
# 或
systemctl restart nginx php-fpm

访问 http://your-ip/DVWA/setup.php,点击 "Create / Reset Database" 初始化。

默认登录:admin / password

3. 漏洞模块说明

3.1 SQL 注入(SQL Injection)

难度 绕过方式
Low 直接拼接,无过滤:' OR '1'='1
Medium 使用 MySQL _real_escape_string,需 1 OR 1=1
High 盲注,页面不显示数据库内容

3.2 XSS 跨站脚本(Cross Site Scripting)

难度 绕过方式
Low 无过滤,直接执行:
Medium 过滤