DVWA 本地部署教程:一条命令拉起你的 Web 安全靶场
DVWA 本地部署教程:一条命令拉起你的 Web 安全靶场
【免费下载链接】DVWADamn Vulnerable Web Application (DVWA)项目地址: https://gitcode.com/gh_mirrors/dv/DVWA
如果你想在合法环境里练手 SQL 注入、XSS、文件上传这类高频漏洞,DVWA 本地部署几乎是最省事的一条路。这个基于 PHP/MariaDB 的练习应用故意把常见漏洞全摊在桌面上,专门用来做安全训练。这篇 DVWA 安装教程带你从零把它跑起来,再聊聊跑通之后该怎么练、怎么避坑。
一、动手前,先把这三条红线记住
先别急着敲命令。DVWA 之所以叫 DVWA,就是因为它是真·脆弱——任何拿到 shell 的人都能直接打穿它。所以下面三条是硬性前提:
- 只跑在隔离环境里。物理机、云服务器、生产服务器一律不行。用虚拟机(NAT 组网)或 Docker 容器,把它和真实网络隔开。
- 绝不对外暴露。默认它只监听本机回环地址,别图方便把端口放开到局域网之外。
- 练完就拆。训练用的账号、库、数据都是临时的,用完彻底删掉,别留尾巴。
🔒 一句话:它是个「合法环境里的靶子」,不是你要挂上网的东西。
二、最快的路:把 DVWA 塞进 Docker
如果你机器上有 Docker,这条路最快,基本不用管 PHP 版本、模块依赖这些脏活。仓库里已经带了compose.yml,把 Web 服务和数据库打包好,开箱即跑。
前置:确认 Docker 就位
先跑两条命令确认环境:
docker version docker compose version能看到版本号就说明环境 OK。没有的话,按 Docker 官方安装文档配好 Docker + Compose 再继续。
三步拉起
第一步,把源码拉下来:
git clone https://gitcode.com/gh_mirrors/dv/DVWA第二步,进入目录并启动:
cd DVWA docker compose up -d第三步,浏览器访问:
http://localhost:4280小结:注意端口是4280,不是常见的80——这是官方故意避开的,免得跟你本机已有的 Web 服务打架。端口想改的话,去 compose.yml 里把127.0.0.1:4280:80的左侧换成你喜欢的端口即可。
Docker 这条路还有一个好处:数据库账号密码、库名都在compose.yml里用环境变量写死了(用户dvwa、密码p@ssw0rd),所以你完全不用碰配置文件。
三、没有 Docker?手动装到 Apache 上的活路
不想用容器、或者你就是想摸清每一层在干什么,那就走手动安装。以 Debian 系(Ubuntu、Kali、Linux Mint)为例。
装软件
一条命令把 Web 服务、数据库和 PHP 全装上:
apt update apt install -y apache2 mariadb-server mariadb-client php php-mysqli php-gd libapache2-mod-php👉 强烈建议用 MariaDB 而不是 MySQL——它默认配置就能跑通,MySQL 反而要改认证方式才顺利。
如果你还想玩 API 那个实验室,记得开启 Apache 的 rewrite 模块:
a2enmod rewrite apachectl restart建库和建用户
MariaDB 下不能直接用 root 给 DVWA 连库,得单独建一个用户。用 root 进数据库,执行下面几行:
create database dvwa; create user dvwa@localhost identified by 'p@ssw0rd'; grant all on dvwa.* to dvwa@localhost; flush privileges;改配置
把仓库里那份「示例配置」复制成真配置,再按需改。这一步是手动安装独有的——
cp config/config.inc.php.dist config/config.inc.php打开 config/config.inc.php,确认这几个值和上面建库时用的对得上:
$_DVWA[ 'db_server' ] = '127.0.0.1'; $_DVWA[ 'db_database' ] = 'dvwa'; $_DVWA[ 'db_user' ] = 'dvwa'; $_DVWA[ 'db_password' ] = 'p@ssw0rd';如果你不想动这些默认值,这步可以直接跳过——只要建库时用的账号密码就是
dvwa / p@ssw0rd,默认配置就能连上。
把源码目录丢进 Apache 的文档根(默认/var/www/html),然后重启服务让配置生效:
apachectl restart四、首次登录与初始化
浏览器访问http://localhost/DVWA,先点主菜单里的Setup DVWA,再点Create / Reset Database。这一步会建库、灌入初始数据,跑完你才算真正拥有可练的靶场。
登录后用默认账号:
- 用户名:
admin - 密码:
password
别笑这个密码——它弱到能被轻松爆破,而这本身就是「弱口令」那个实验室的一部分。
五、跑起来之后:19 个实验室怎么练
跑通之后你会发现,左侧菜单挂着一整排漏洞实验室,基本覆盖 OWASP 高频项:SQL 注入(含盲注sqli/sqli_blind)、三类 XSS(存储xss_s、反射xss_r、DOMxss_d)、CSRF、文件上传upload、文件包含fi、命令执行exec、CSP、JS 安全、开放重定向、弱 ID、暴力破解与验证码brute/bac/captcha、加解密、认证绕过,还有个带 Composer 依赖的api接口。
每个实验室都分四个难度档:low/medium/high/impossible。练法很简单——
- 从
low起步,理解它为什么被打穿; - 看
impossible的修复写法,对照源码看差在哪; - 再回头做
medium和high,验证自己能不能独立复现。
想细看某个模块的原理和源码,点实验室旁的 help,或者翻 vulnerabilities/ 下各模块的source/目录,每个难度都有独立 PHP 文件对着看。
六、进阶:把练习当真实渗透来打
跑通只是开始,真正长本事在「拿工具打它」这一步:
接 Burp Suite / OWASP ZAP抓包、重放、跑扫描,把实验室当真实目标打一遍。
给自动化工具关鉴权。有些工具不爱处理 cookie 和登录态,可以在配置里把认证关掉并固定一个低难度:
$_DVWA[ 'disable_authentication' ] = true; $_DVWA[ 'default_security_level' ] = 'low';这样所有功能免登录直连,适合喂给扫描器。
换 SQLi 后端练手。默认注入打的是 MariaDB,也能切到 SQLite3(改配置里的
SQLI_DB),文件在 database/sqli.db.dist,玩坏了直接拷回去复原。让 PHP 把错误亮出来。排障和练注入时,开着错误显示能省不少时间:
display_errors = on display_startup_errors = on改完记得重启 Apache。
七、卡住了?这些坑我替你踩过
手动安装最容易翻车的几个点,对号入座:
- 访问是 404 或 Apache 默认页:九成是大小写。目录名是
DVWA(大写),Linux 区分大小写,http://localhost/dvwa会 404,必须走http://localhost/DVWA。 - 打开是白屏:通常是 PHP 把错误吞了。先开
display_errors,再重启服务,真正的报错(多半是连不上库)才会现形。 - Access denied #1045:配置里的账号/密码和数据库对不上。命令行验一下
mysql -u dvwa -pp@ssw0rd -D dvwa(注意-p后没空格),能连上就说明是配置文件填错了。 - Connection refused / #2002:数据库没起来。
systemctl status mariadb.service看一眼是不是active (running),没跑就sudo systemctl start mariadb。 - Unknown authentication method #2054:新版 MySQL 的
caching_sha2_password认证和老 PHP 不兼容。最省事的办法是别用 MySQL,换 MariaDB。
容器用户查日志更直接:
docker compose logs看合并日志,或直接在 Docker Desktop 里点容器名看详情面板。
八、练完之后,周边还能看什么
把 DVWA 吃透之后,可以往这几个方向延伸:
- 同类靶场:OWASP Broken Web Applications Project(BWAPP,应用类型更多)、Metasploitable(一整套脆弱的 Linux,服务种类多)、VulnHub(一堆实战向虚拟机)。
- 跟紧版本:漏洞点和修复方式会持续更新,养成定期拉新代码的习惯,CHANGELOG.md 里能看到改动轨迹。
- 啃官方资料:仓库 docs/ 下有 PDF 版文档和图形说明,tests/ 里还带了个用 pytest 扫死链的小脚本,能当「如何给 Web 项目写检查」的入门样例。
最后一句老话:所有渗透手段都只该用在你被明确授权的环境里。靶场归靶场,别越界。
(完)
【免费下载链接】DVWADamn Vulnerable Web Application (DVWA)项目地址: https://gitcode.com/gh_mirrors/dv/DVWA
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考