【零基础实战】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

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

相关推荐
DeepHacking12 小时前
Ubuntu 上安装 ComfyUI(NVIDIA GPU / Conda / CUDA 12.1)
linux·ubuntu·conda
YQ_0112 小时前
Ubuntu 执行 `ubuntu-drivers autoinstall` 后,Wi‑Fi 消失、外接显示器无反应的排查与修复
linux·运维·ubuntu
CHICX122912 小时前
3.SQL 注入之高权限注入(上):从权限原理到跨库攻击,吃透 root 权限注入的危害与防御
web安全·网络安全
cui_ruicheng12 小时前
操作系统入门(一):从冯诺依曼到进程概念
linux·运维·服务器·ubuntu
zoujiahui_201812 小时前
ubuntu使用中的问题
linux·ubuntu·github
鹅天帝12 小时前
20260407网安学习日志——序列化漏洞
前端·学习·web安全·网络安全·xss
芯盾时代12 小时前
政务行业面临的网络风险
网络·数据库·网络安全
买大橘子也用券12 小时前
第一届 Polaris CTF 招新赛(部分web) wp
web安全·网络安全
HenryLiuu13 小时前
Ubuntu 20.04, cuda 12.1版本安装flash attention 2教程
linux·ubuntu
starvapour1 天前
Ubuntu系统下基于终端的音频相关命令
linux·ubuntu·音视频