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

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

相关推荐
湮雨塵飛9 小时前
解决使用VsCode远程ssh连接虚拟机ubuntu需要重复输入密码
vscode·ubuntu·ssh
碎忆10 小时前
在VMware中安装虚拟机Ubuntu
linux·ubuntu
农民小飞侠10 小时前
ubuntu 安装pyllama教程
linux·python·ubuntu
小白也有IT梦11 小时前
解决 Ubuntu 上 Docker 安装与网络问题:从禁用 IPv6 到配置代理
ubuntu·docker·网络配置
慕雪华年14 小时前
【SLAM】ubuntu 18.04 编译安装 OpenCV 3.2.0 时出现哈希错误
opencv·ubuntu·哈希算法
_长银16 小时前
Ubuntu-搭建nifi服务
linux·运维·ubuntu
m0_5211182317 小时前
Ubuntu在桌面缺少图标
linux·ubuntu
小小菜鸟,可笑可笑19 小时前
Win10系统安装WSL2-Ubuntu, 并使用VScode开始工作
linux·vscode·ubuntu
矛取矛求20 小时前
VMware 安装 Ubuntu 实战分享
linux·运维·ubuntu
CAE虚拟与现实21 小时前
在 WSL2的 Ubuntu 20.04 中安装 Docker
linux·ubuntu·docker