【零基础实战】Ubuntu搭建DVWA漏洞靶场全流程详解(附渗透测试示例)

【零基础实战】Ubuntu搭建DVWA漏洞靶场全流程详解(附渗透测试示例)

一、DVWA靶场简介

DVWA(Damn Vulnerable Web Application)是专为网络安全学习者设计的漏洞演练平台,包含SQL注入、XSS、文件包含等10大Web漏洞模块,采用PHP+MySQL架构,非常适合用于:

  • Web安全漏洞原理学习
  • 渗透测试技能实战演练
  • 安全工具(BurpSuite、sqlmap等)实战测试

二、环境准备(Ubuntu 20.04/22.04)

1. 更新系统源

bash 复制代码
sudo apt update && sudo apt upgrade -y

2. 安装LAMP环境

bash 复制代码
sudo apt install -y apache2 mysql-server php libapache2-mod-php php-mysql

3. 安装必要扩展

bash 复制代码
sudo apt install -y php-gd php-curl php-zip php-mbstring php-xml

三、DVWA部署流程(详细步骤)

1. 下载DVWA源码

bash 复制代码
cd /var/www/html
sudo wget https://githubfast.com/digininja/DVWA/archive/master.zip
sudo unzip master.zip
sudo mv DVWA-master dvwa
sudo rm master.zip

2. 配置数据库

bash 复制代码
#启动mysql
sudo systemctl start mysql
#查看状态
sudo systemctl status mysql
#开机服务启动
sudo systemctl enable mysql


sudo mysql -u root -p
> CREATE DATABASE dvwa;
> CREATE USER 'dvwa_user'@'localhost' IDENTIFIED BY 'P@ssw0rd';
> GRANT ALL PRIVILEGES ON dvwa.* TO 'dvwa_user'@'localhost';
> FLUSH PRIVILEGES;
> exit



#docker单独安装mysql数据库(可选)
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:8.0.39
#启动(可选)
docker run --name mysql_test -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:8.0.39
#进入(可选)
docker exec -it mysql_test mysql -uroot -p

3. 修改配置文件

bash 复制代码
cd dvwa/config
sudo cp config.inc.php.dist config.inc.php
sudo nano config.inc.php

修改以下参数:

php 复制代码
$_DVWA['db_user'] = 'dvwa_user';
$_DVWA['db_password'] = 'p@ssw0rd';

$_DVWA[ 'recaptcha_public_key' ]  = getenv('RECAPTCHA_PUBLIC_KEY') ?: '6LdJJlUUAAAAAH1Q6cTpZRQ2Ah8VpyzhnffD0mBb';
$_DVWA[ 'recaptcha_private_key' ] = getenv('RECAPTCHA_PRIVATE_KEY') ?: '6LdJJlUUAAAAAM2a3HrgzLczqdYp4g05EqDs-W4Kwq';

数据库修改:

配置key:

4. 设置文件权限

bash 复制代码
sudo chmod -R 755 /var/www/html/dvwa
sudo chown -R www-data:www-data /var/www/html/dvwa

5. 重启服务

bash 复制代码
#启用mod_rewrite
sudo a2enmod rewrite

#修改vim /etc/php/8.3/apache2/php.ini
display_startup_errors = On
#如果没有则添加
display_errors = On

#允许远程文件访问
allow_url_fopen = On
allow_url_include = On

sudo systemctl restart apache2 

#检查状态
systemctl status apache2


#查看报错日志
tail -f /var/log/apache2/error.log

四、访问与初始化

  1. 浏览器访问 http://localhost/dvwa
  2. 点击"Create / Reset Database"初始化数据库:
  3. 使用默认账号登录:
    • 用户名:admin
    • 密码:password

登录界面:

五、常见问题排查

1. PHP函数未启用错误

解决方法:

bash 复制代码
sudo nano /etc/php/8.1/apache2/php.ini

修改以下配置:

ini 复制代码
allow_url_include = On
magic_quotes_gpc = Off

2. 数据库连接失败

检查:

  • MySQL服务状态 systemctl status mysql
  • 用户权限是否配置正确
  • 防火墙是否放行3306端口

3. 文件权限问题

重置权限命令:

bash 复制代码
sudo chmod -R 777 /var/www/html/dvwa/hackable/uploads

六、渗透测试实战示例(SQL注入)

1. 设置安全等级

将DVWA Security设为"Low"

2. SQL注入测试

访问SQL Injection页面,输入:
1' union select 1,group_concat(user,0x3a,password) from users#

3. 使用sqlmap自动化测试

bash 复制代码
sqlmap -u "http://localhost/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="PHPSESSID=xxx; security=low" --dbs

七、安全建议

  1. 仅在本地环境搭建
  2. 定期更新系统补丁
  3. 使用完成后关闭服务
bash 复制代码
sudo systemctl stop apache2 mysql

下一篇预告: 《DVWA靶场XSS漏洞实战:从注入到Cookie劫持》

(注:实际操作请遵守网络安全法,仅在授权环境进行测试)

安全建议

  1. 仅在本地环境搭建
  2. 定期更新系统补丁
  3. 使用完成后关闭服务
bash 复制代码
sudo systemctl stop apache2 mysql

如果本教程帮助您解决了问题,请点赞❤️收藏⭐支持!欢迎在评论区留言交流技术细节!

相关推荐
合天网安实验室5 小时前
H2O-3反序列化漏洞分析(CVE-2025-6507&CVE-2025-6544)
前端·黑客
欧云服务器6 天前
怎么让脚本命令可以同时在centos、debian、ubuntu执行?
ubuntu·centos·debian
智渊AI6 天前
Ubuntu 20.04/22.04 下通过 NVM 安装 Node.js 22(LTS 稳定版)
ubuntu·node.js·vim
一名优秀的码农6 天前
vulhub系列-14-Os-hackNos-1(超详细)
安全·web安全·网络安全·网络攻击模型·安全威胁分析
努力的lpp6 天前
SQLMap CTF 常用命令全集
数据库·web安全·网络安全·sql注入
努力的lpp6 天前
SQL 报错注入
数据库·sql·web安全·网络安全·sql注入
岛屿旅人6 天前
2025年中东地区网络安全态势综述
网络·安全·web安全·网络安全
The️6 天前
Linux驱动开发之Read_Write函数
linux·运维·服务器·驱动开发·ubuntu·交互
努力的lpp6 天前
【ctf常用备用文件名字典】
web安全·网络安全·ctf
再战300年6 天前
Samba在ubuntu上安装部署
linux·运维·ubuntu