摘要:本文是《DVWA从入门到精通》系列的第一篇,带你全面认识DVWA这个Web安全界的"练功房"。从它的诞生背景、设计理念,到手把手教你基于openEuler(欧拉)24.03 LTS操作系统,使用小皮面板(phpStudy)完成环境搭建和初始化配置,让你在零基础的情况下也能拥有属于自己的安全测试靶场。
一、写在前面:你为什么需要DVWA?
在Web安全的学习道路上,你可能会遇到这样的困惑:学了各种漏洞原理,但不敢在真实网站上练习;看了很多教程,但缺乏一个可以"动手"的环境。这时候,你就需要一个合法、安全、可控的练习靶场。
DVWA(Damn Vulnerable Web Application)是目前全球最受欢迎的Web安全练习靶场之一。它就像一个网络安全的"练功房" ,让你可以在完全合法的环境中,练习各种黑客攻击技术,同时也学习如何防御。
二、DVWA的前世今生
2.1 它为什么叫"Damn Vulnerable"?
DVWA的全称是 Damn Vulnerable Web Application ,直译过来就是 "该死的易受攻击的Web应用" 。这个名字起得相当直白------它就是故意被设计得漏洞百出的PHP/MySQL应用。
它的目的很单纯:让你在里面"为所欲为"地练习各种攻击技术。
2.2 诞生背景
DVWA项目始于2008年 。当时Web安全领域正在快速发展,但安全人员缺乏一个标准化、合法、可控的练习环境。DVWA的出现填补了这个空白------它提供了一个包含多种常见Web漏洞的靶场,让安全人员可以在不违法的情况下练习渗透测试技能。
如今,DVWA已被纳入多个流行的渗透测试工具集和Linux发行版中,全球有成千上万的安全专业人员、学生和教师在用它学习和教学。
2.3 与其他靶场的对比
| 靶场 | 特点 | 适合人群 |
|---|---|---|
| SQLi-Labs | 专注于SQL注入,题目数量多 | 想深耕SQL注入的学习者 |
| Pikachu | 漏洞类型丰富,界面友好 | 刚入门想广泛接触漏洞的新手 |
| DVWA | 每个漏洞分4个难度级别,攻防兼备 | 想系统学习攻防全流程的学习者 |
| WebGoat | OWASP官方出品,Java生态 | 对Java Web安全感兴趣的人 |
DVWA的优势在于它既有广度(覆盖10+种漏洞),又有深度(每个漏洞4个难度级别) ,是系统学习Web安全的绝佳选择。
三、DVWA的核心设计理念
3.1 十大核心模块
DVWA包含十个核心漏洞模块:
| 序号 | 模块名称 | 中文名称 | 漏洞类型 |
|---|---|---|---|
| 1 | Brute Force | 暴力破解 | 认证绕过 |
| 2 | Command Injection | 命令注入 | 代码执行 |
| 3 | CSRF | 跨站请求伪造 | 会话管理 |
| 4 | File Inclusion | 文件包含 | 文件操作 |
| 5 | File Upload | 文件上传 | 文件操作 |
| 6 | Insecure CAPTCHA | 不安全的验证码 | 逻辑漏洞 |
| 7 | SQL Injection | SQL注入 | 数据库注入 |
| 8 | SQL Injection (Blind) | SQL盲注 | 数据库注入 |
| 9 | XSS (Reflected) | 反射型XSS | 跨站脚本 |
| 10 | XSS (Stored) | 存储型XSS | 跨站脚本 |
3.2 四个安全级别:从"裸奔"到"铜墙铁壁"
DVWA最精妙的设计在于:每个漏洞模块都提供4个安全级别:
| 级别 | 含义 | 特点 |
|---|---|---|
| Low | 无任何防护 | 展示漏洞最原始的形态,直接"裸奔" |
| Medium | 基础防护 | 有一定过滤但存在绕过可能,演示典型防护误区 |
| High | 较强防护 | 需要高级绕过技术,呈现攻防对抗的复杂性 |
| Impossible | 最佳实践 | 几乎无法利用,展示彻底的防御方案 |
这种设计让你可以从易到难 ,逐步深入理解每个漏洞的原理、利用方式和防御方法。通过对比不同级别的源代码,你能清晰地看到开发者是如何一步步加固应用的。
四、手把手搭建DVWA靶场
4.1 环境准备
DVWA是基于PHP + MySQL开发的Web应用,所以我们需要一个能运行PHP和MySQL的环境。
操作系统:openEuler(欧拉)24.03 LTS
欧拉操作系统(openEuler)是面向数字基础设施的开源操作系统,支持服务器、云计算、边缘计算等多种应用场景。openEuler 24.03 LTS版本基于Linux Kernel 6.6构建,对外接口遵循POSIX标准。
推荐方案:小皮面板(phpStudy)
小皮面板(原名phpStudy)是国内老牌的PHP集成环境管理工具,集成了Apache/Nginx、MySQL、PHP等核心组件。官方支持CentOS、Ubuntu、Debian、Fedora、Deepin等主流Linux发行版,虽然openEuler不在官方明确支持的列表中,但由于openEuler兼容主流Linux生态,小皮面板的通用安装脚本依然可以正常运行。
所需环境:
-
操作系统:openEuler 24.03 LTS
-
小皮面板(phpStudy Linux版)
-
DVWA源码
4.2 openEuler 24.03环境准备
第一步:切换root用户
首先登录你的openEuler系统,切换为root用户:
su root
然后输入root密码。
第二步:安装依赖工具
openEuler使用dnf作为包管理器,安装wget等必要工具:
dnf install wget -y
第三步:关闭防火墙和SELinux
为了避免后续访问出现问题,建议先关闭防火墙和SELinux:
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 临时关闭SELinux(重启后失效)
setenforce 0
# 永久关闭SELinux(需重启生效)
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
验证SELinux是否已关闭:
getenforce
如果显示 Disabled 则表示已关闭。
4.3 安装小皮面板
第一步:执行安装脚本
使用SSH连接工具连接到你的openEuler服务器后,执行以下命令开始安装(大约2分钟完成面板安装):
curl -O https://dl.xp.cn/dl/xp/install.sh && sudo bash install.sh

第二步:记录面板访问信息
安装完成后,终端会显示类似以下信息:
=========================面板账户信息===========================
面板版本: v1.5.9
外网面板地址: http://220.178.180.198:53694/de4dba
内网面板地址: http://10.0.0.149:53694/de4dba
面板账号: 41c90cee
面板密码: e043a3ab
=========================面板注意事项===========================
【云服务器】请在安全组放行53694端口
面板工具命令: xp
================================================================
请务必记录下这些信息,后续登录面板需要使用。

第三步:放行端口(如需外网访问)
如果需要在局域网或外网访问小皮面板,需要开放端口:
firewall-cmd --zone=public --add-port=端口/tcp --permanent
firewall-cmd --reload
4.4 登录小皮面板并安装基础套件
第一步:登录面板
在浏览器中访问安装完成后显示的地址(http://10.0.0.149:53694/de4dba),使用默认账号 登录。


第二步:安装基础套件
进入小皮面板,安装网站运行的基础套件(包含Apache/Nginx、MySQL、PHP等)。选择推荐的套件点击一键安装即可。

等待基础套件安装完成后,你的Web运行环境就搭建完毕了。
4.5 下载并部署DVWA
第一步:下载DVWA源码
DVWA的官方源码托管在GitHub上。进入小皮面板的网站根目录,执行:
cd /xp/www
git clone https://github.com/digininja/DVWA.git
如果 git 命令不可用,先安装:
dnf install -y git
第二步:重命名目录
为了便于访问,将目录重命名为 dvwa:
mv DVWA dvwa
第三步:在小皮面板中添加站点
登录小皮面板管理界面:
点击左侧菜单的 "网站" ,点击 **"添加网站",**选择手动创建,点击下一步

填写域名 (可以是你的服务器IP地址),网站目录 选择 /xp/www/dvwa

PHP版本 选择 7.3.x(DVWA在PHP 7.3上运行最稳定,PHP 8.x可能存在兼容性问题),点击确定

第四步:创建配置文件
DVWA提供了一个配置模板,复制一份并重命名:
cd /xp/www/dvwa/config
cp config.inc.php.dist config.inc.php
第五步:配置数据库连接
编辑 config.inc.php 文件:
vim config.inc.php
找到数据库配置部分,修改为以下内容:
$_DVWA[ 'db_server' ] = '127.0.0.1';
$_DVWA[ 'db_database' ] = 'dvwa';
$_DVWA[ 'db_user' ] = 'root'; // MySQL用户名
$_DVWA[ 'db_password' ] = 'root'; // MySQL密码(小皮面板默认root)
$_DVWA[ 'db_port' ] = '3306';

第六步:修改PHP配置
DVWA需要开启PHP的某些配置项才能正常运行。
直接在面板的软件管理 中找到对应PHP版本,点击设置 进入 php.ini 编辑。
找到以下几项配置,将其修改为 On:
allow_url_fopen = On
allow_url_include = On
display_errors = On
display_startup_errors = On


保存后,在小皮面板中重启PHP服务。

第七步:设置目录权限
chown -R www:www /xp/www/dvwa
chmod -R 755 /xp/www/dvwa
第八步:修改SQL文件
由于mysql版本不支持ADD COLUMN IF NOT EXISTS,所以防止报错,去掉IF NOT EXISTS,修改/xp/www/dvwa/dvwa/includes/DBMS/MySQL.php


4.6 初始化DVWA
以上所有配置完成后,就可以初始化DVWA了。
在浏览器中访问:
http://你的服务器IP/setup.php
点击页面底部的 "Create / Reset Database" 按钮。系统会自动创建数据库和初始数据。


4.7 登录DVWA
初始化完成后,页面会自动跳转到登录页,或手动访问:
http://你的服务器IP/login.php
使用默认账号登录:
-
用户名 :
admin -
密码 :
password

五、界面导览
登录成功后,你会看到DVWA的主界面:
左侧导航栏:列出了所有漏洞模块,点击即可进入对应的练习页面。
重要菜单:
-
DVWA Security:设置当前的安全级别(Low/Medium/High/Impossible)
-
View Source:查看当前页面的PHP源代码(边做边看源码才能理解漏洞原理)
-
Logout:退出登录

六、总结
本文作为《DVWA从入门到精通》系列的开篇,我们了解了DVWA的诞生背景与设计理念------一个始于2008年、包含十大核心模块和四个安全级别的全球知名Web安全练习靶场;在openEuler(欧拉)24.03 LTS操作系统上完成了环境准备,关闭了防火墙和SELinux;使用小皮面板(phpStudy)一键部署了Web运行环境并安装了基础套件;亲手部署了DVWA靶场------从下载源码、添加站点、配置数据库到初始化,一步到位;最后熟悉了DVWA的界面布局和基本操作。
**重要声明:**本教程及文中所有操作仅限于合法授权的安全学习与研究。作者及发布平台不承担因不当使用本教程所引发的任何直接或间接法律责任。请务必遵守中华人民共和国网络安全相关法律法规。
如果这篇文章帮你解决了实操上的困惑,别忘记点击点赞、分享 ,也可以留言告诉我你遇到的其它问题,我会尽快回复。你的关注是我坚持原创和细节共享的力量来源,谢谢大家。