从零搭建 DVWA 漏洞靶场:一条命令拉起安全测试环境完整指南
【免费下载链接】DVWADamn Vulnerable Web Application (DVWA)项目地址: https://gitcode.com/gh_mirrors/dv/DVWA
DVWA(Damn Vulnerable Web Application)是一个专门"故意写坏"的 Web 应用,内部预埋了 SQL 注入、XSS、文件上传、命令注入等经典漏洞,供安全学习和渗透演练使用。本文带你用 Docker Compose 把这套安全测试环境完整跑起来,从拉取代码到登录初始化,全程几分钟搞定。
🎯 先说清楚:这套靶场适合谁
DVWA 最大的特点是"漏洞分难度",同一个攻击点提供从几乎裸奔到接近生产级防护的多个档位,所以它既能帮刚入门的人理解漏洞是怎么发生的,也能让有一定基础的练习者琢磨各种绕过手法。如果你是学生、转行的安全爱好者,或者想给团队搭一套隔离的演练环境,它都是一个性价比很高的起点——不用自己拼凑各种易受攻击的 demo,开箱即有完整练习场。
🔍 部署前,先确认这两件事
开始动手前,花十秒钟确认本机环境,能避免后面踩坑。第一件事是检查 Docker 是否可用:
docker version这条命令会打印 Docker 引擎与客户端的版本信息,能看到版本号就说明守护进程正在运行。第二件事是确认 Docker Compose 可用:
docker compose version它能返回 compose 版本号即可。DVWA 走的是容器化部署,依赖这两个组件把应用和数据库一起拉起来,所以只要上面两条命令都有正常输出,就可以进入下一步了。
🚀 一条流水线把靶场跑起来
下面是一条连贯的部署流水,照着顺序走就行,每步之间不需要额外操作。
先拉取项目代码到本地:
git clone https://gitcode.com/gh_mirrors/dv/DVWA这条命令把 DVWA 的完整源码克隆到当前目录下的DVWA文件夹里。
然后进入项目目录并启动服务:
cd DVWA docker compose up -dup -d会在后台拉起两个容器:一个是跑 DVWA 应用的 PHP/Apache 容器,另一个是 MariaDB 数据库容器,两者的编排关系都写在 compose.yml 里,端口映射为127.0.0.1:4280:80,也就是本地 4280 端口对外、容器 80 端口对内。
服务起来后,打开浏览器访问http://localhost:4280,你会看到 DVWA 的登录页。使用默认账号admin、默认密码password登录——这是 DVWA 内置的初始凭证,第一次使用无需额外配置。
登录进主界面后,找到Setup DVWA区域,点击Create / Reset Database按钮,这就是数据库初始化动作,它会按配置把靶场需要的数据表灌进 MariaDB 容器里。执行成功后,各个漏洞模块就能正常交互了。
🧪 靶场里能练哪些漏洞
所有演练模块集中在 vulnerabilities/ 目录下,每个模块对应一类真实 Web 攻击面,挑感兴趣的进:
- SQL 注入:vulnerabilities/sqli/ 与 vulnerabilities/sqli_blind/,分别覆盖显式回显和盲注两种场景
- 跨站脚本(XSS):vulnerabilities/xss_d/(DOM 型)、vulnerabilities/xss_r/(反射型)、vulnerabilities/xss_s/(存储型)
- 文件上传漏洞:vulnerabilities/upload/,可以练各种绕过与木马落地
- 命令注入:vulnerabilities/exec/,通过系统调用把参数塞进 shell
- 其他常见项:CSRF、文件包含(FI)、CSP 绕过、弱口令(weak_id)、鉴权绕过(authbypass)、图形验证码绕过(captcha)等
每个模块内部都按难度分档,可以同模块从易到难一路打通。
🎚️ 难度开关怎么拨
DVWA 的防护强度由"安全级别"控制,档位从低到高,防护逐步收紧:
- Low(低):几乎无防护,适合先看漏洞原理
- Medium(中):加了基础过滤,需要一些简单绕过
- High(高):防护更强,适合练更精细的手法
- Impossible(不可能):展示"写对了应该是什么样"的最佳实践,用来对照学习
切换入口在登录后页面的安全级别选择处,会话内即时生效,无需重启。想固定默认档位,可以改 config/config.inc.php.dist 里的default_security_level环境变量映射,或在 compose 中通过环境变量注入。
🛡️ 红线与进阶
红线先说清楚:DVWA 是学习工具,不是生产系统。请务必只在合法合规、你拥有或获得授权的环境里使用;强烈建议放在虚拟机或完全隔离的网络段中运行,不要把 4280 端口暴露到公网;同时关注上游更新,及时同步安全修复。
进阶方向,熟练之后可以这样玩:
- 改配置:编辑 config/config.inc.php.dist 调整数据库连接、默认安全级别、是否禁用鉴权等
- 调端口:在 compose.yml 里改
ports映射,比如把 4280 换成团队习惯的端口 - 自动化:把靶场接入 CI,跑自动化的安全测试流程,用来验证扫描器或规则更新后的效果
至此,你手上就有一套随时可起、随时可重置的漏洞演练环境了。保持隔离、保持更新,剩下的就是把每个模块从 Low 一路练到 Impossible。
【免费下载链接】DVWADamn Vulnerable Web Application (DVWA)项目地址: https://gitcode.com/gh_mirrors/dv/DVWA
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考