ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

DVWA 本地部署教程:一条命令拉起你的 Web 安全靶场

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。练法很简单——

  1. 从low起步,理解它为什么被打穿;
  2. 看impossible的修复写法,对照源码看差在哪;
  3. 再回头做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),仅供参考

返回列表