文章总结: 本文档是一份基于Docker的Web漏洞靶场搭建指南,详细介绍了17个主流靶场(如DVWA、JuiceShop、WebGoat等)的搭建方法、访问地址和实用提示。文档强调靶场仅用于合法授权环境下的渗透测试学习与安全研究,并提供了Docker安装、整体架构、分类总览及端口速查表。核心结论是Docker可快速部署隔离的漏洞环境,适合安全技能训练。可操作建议包括根据学习目标选择靶场并注意端口冲突。 综合评分: 83 文章分类: WEB安全,渗透测试,安全工具,安全培训,漏洞分析
基于 Docker 的 Web 漏洞靶场搭建全指南
原创
钟智强 钟智强
哪吒网络安全
2026年7月27日 10:51 马来西亚
在小说阅读器读本章
去阅读
🐳
基于 Docker 的 Web 漏洞靶场搭建全指南
17 个主流漏洞靶场 · 一条命令一键起环境
涵盖 DVWA · Juice Shop · WebGoat · SQLi-Labs · GraphQL · API · SSRF · 密钥管理 等
适用于合法授权环境下的渗透测试学习与安全研究
目录
引言
一、什么是漏洞靶场
二、前置条件
三、安装 Docker
四、整体架构与搭建流程
五、靶场分类总览
六、逐个搭建(17 个靶场)
· DVWA · Juice Shop · VulnApp · WebGoat · SQLi-Labs · bWAPP · Mutillidae II
· DVGA · DV RESTurant · Pixi · PyGoat · SSRF · VulnBank · VulnLab · WrongSecrets · Yrprey · Zero Health
七、端口速查表
八、合规与安全提醒
结语
引言
在网络安全领域,渗透测试与漏洞评估是识别和缓解安全威胁的关键环节。随着 Web 应用数量的持续增长,一个安全、可复现的测试环境变得比以往任何时候都更加重要。本文将介绍漏洞靶场的价值,并手把手教你使用 Docker 快速搭建 17 个主流靶场。
一、什么是漏洞靶场
漏洞靶场(Vulnerable Web Application)是被“故意设计成不安全”的 Web 应用,目的是让渗透测试人员与安全研究者在安全、可控的环境中练习与提升技能。它们广泛应用于安全教学与研究,是识别、复现和理解各类安全威胁的重要工具。
二、前置条件
•对 Docker 及其常用命令有基本了解;
•熟悉 Linux 与 Web 应用的基本操作。
三、安装 Docker
Docker 是一个可以在轻量、隔离的容器中运行应用的平台——非常适合在不影响宿主系统的前提下部署漏洞靶场。在基于 Debian / Ubuntu 的系统(如 Kali Linux)上,可用如下命令安装 Docker 与 Docker Compose:
| | | — | | $ apt install docker.io $ apt install docker-compose |
说明:生产环境建议参考官方文档安装 Docker Engine 与 docker compose 插件;本文命令面向本地学习环境。
四、整体架构与搭建流程
所有靶场都运行在同一台宿主机的 Docker 引擎之上,彼此以隔离容器的形式并存,各自映射到独立端口。测试主机上的浏览器、Burp Suite、curl 等工具通过 HTTP 请求访问对应端口即可开始测试。
图 1 Docker 漏洞靶场整体架构示意
无论镜像方式还是源码方式,搭建流程都遵循相同的四步:安装 Docker → 获取靶场(pull 镜像或 clone 仓库)→ 启动容器(docker run 或 docker compose up)→ 浏览器访问对应端口。
图 2 靶场搭建四步流程
五、靶场分类总览
本文的 17 个靶场按训练重点大致可分为六类:Web 基础漏洞、现代 JS / 单页应用、API / GraphQL 安全、闯关教学式、SQL 注入专项,以及密钥管理、SSRF 等专题训练。可根据自己的学习目标选择切入。
图 3 17 个靶场按训练重点分类
六、逐个搭建(17 个靶场)
以下逐一给出每个靶场的简介、搭建命令、访问地址与实用提示。注意:多个靶场默认占用相同端口(如 80、8080、8000、3000),请勿同时启动冲突的靶场,或通过修改 -p 宿主端口映射来规避冲突。
01 DVWA(Damn Vulnerable Web Application)
基于 PHP/MySQL 的经典漏洞靶场,模拟一个存在缺陷的网站,覆盖 SQL 注入、XSS、命令注入、文件上传等常见 Web 漏洞,并提供 Low / Medium / High / Impossible 四档安全等级,非常适合从入门到进阶的循序练习。
| | | — | | $ docker pull sagikazarmark/dvwa $ docker run –rm -it -p 8080:80 sagikazarmark/dvwa |
访问地址:http://localhost:8080/login.php
提示:默认凭据 admin / password;登录后需点击 “Create / Reset Database” 初始化数据库。占用 8080 端口。
02 OWASP Juice Shop
OWASP 旗舰级现代化靶场,采用 Node.js + Angular 单页应用架构,内置数十个由易到难的挑战(含隐藏计分板),覆盖 OWASP Top 10 及大量真实业务逻辑漏洞。
| | | — | | $ docker pull bkimminich/juice-shop $ docker run –rm -p 3000:3000 bkimminich/juice-shop |
访问地址:http://localhost:3000
提示:无需初始化,启动即用。占用 3000 端口(与 PyGoat、Zero Health 冲突,勿同时启动)。
03 OWASP VulnApp(VulnerableApp-Facade)
OWASP 出品的分布式漏洞靶场,通过 nginx 网关将请求路由到不同技术栈(PHP、JSP 等)的漏洞子应用,覆盖 SQL 注入、XSS、文件包含等,便于跨语言对比同类漏洞的表现。
| | | — | | $ git clone https://github.com/SasanLabs/VulnerableApp.git $ cd VulnerableApp $ docker-compose up |
访问地址:http://localhost:80
提示:占用 80 端口(与 SQLi-Labs、bWAPP、Mutillidae 冲突)。
04 OWASP WebGoat
OWASP 经典的闯关式教学靶场,以课程 + 练习的形式讲解认证、授权、输入校验等主题,每关配有讲解与提示,边学边练。
| | | — | | $ docker pull webgoat/webgoat $ docker run -p 127.0.0.1:8080:8080 -p 127.0.0.1:9090:9090 -e TZ=Europe/Amsterdam webgoat/webgoat |
访问地址:http://localhost:8080/WebGoat/login
提示:首次进入需注册账号;9090 端口用于 WebWolf 辅助工具。占用 8080 端口。
05 SQLi-Labs
专注 SQL 注入的关卡式靶场,覆盖报错注入、布尔盲注、时间盲注、双查询注入、堆叠注入、outfile 导出等,从 GET / POST 到 Header / Cookie 注入一应俱全,共 65+ 关。
| | | — | | $ docker pull acgpiano/sqli-labs $ docker run -d -p 80:80 acgpiano/sqli-labs:latest |
访问地址:http://localhost
提示:首次访问需点击 “Setup/reset Database for labs” 初始化数据库。占用 80 端口。
06 bWAPP(buggy web application)
一款“极其多 Bug”的开源靶场,覆盖 OWASP Top 10 的上百个漏洞(注入、XSS、文件包含、LDAP / 邮件头注入等),并可切换 low / medium / high 安全等级。
| | | — | | $ docker pull raesene/bwapp $ docker run -d -p 80:80 raesene/bwapp |
访问地址:http://localhost/install.php
提示:首次访问 install.php 点击 “here” 完成安装后再进入主页。占用 80 端口。
07 OWASP Mutillidae II
OWASP 的深度漏洞靶场,覆盖 SQL 注入、XSS、文件包含等,按 OWASP 2007–2017 各版本 Top 10 组织菜单,内置提示、日志与抓包展示,场景真实且有挑战性。
| | | — | | $ git clone https://github.com/webpwnized/mutillidae-docker.git $ cd mutillidae-docker $ docker compose -f .build/docker-compose.yml up –build –detach |
访问地址:http://localhost:80
提示:首页可 “Reset DB” 重置数据;含 LDAP、数据库等配套容器。占用 80 端口。
08 Damn Vulnerable GraphQL Application(DVGA)
面向 GraphQL 的专项漏洞靶场,演示 GraphQL 特有的攻击面(内省滥用、批量查询、注入、拒绝服务等),支持 Beginner / Expert 两种难度。
| | | — | | $ docker pull dolevf/dvga $ docker run -t -p 5013:5013 -e WEB_HOST=0.0.0.0 dolevf/dvga |
访问地址:http://localhost:5013
提示:可通过界面或 X-DVGA-MODE 请求头切换难度。占用 5013 端口。
09 Damn Vulnerable RESTurant API
以餐厅点餐为背景的 RESTful API 靶场,聚焦 API 安全,覆盖认证、授权等 API 特有缺陷,自带 Swagger / OpenAPI 文档界面便于调试。
| | | — | | $ git clone https://github.com/theowni/Damn-Vulnerable-RESTaurant-API-Game.git $ cd Damn-Vulnerable-RESTaurant-API-Game $ ./start_app.sh |
访问地址:http://localhost:8091/docs
提示:通过 start_app.sh 一键拉起;/docs 为交互式 API 文档。占用 8091 端口。
10 Pixi
DevSlop 出品的 MEAN 技术栈社交平台靶场,围绕 API 与前端的常见缺陷设计,适合练习现代应用与 API 的漏洞利用。
| | | — | | $ git clone https://github.com/DevSlop/Pixi.git $ cd Pixi $ docker-compose up |
访问地址:http://localhost:8000/login
提示:含前端与 MongoDB 后端。占用 8000 端口(与 PyGoat 冲突)。
11 PyGoat
面向 Python / Django 的闯关式靶场,按 OWASP Top 10 组织课程,覆盖注入、失效的认证、敏感信息泄露、XXE、访问控制等,适合 Python 技术栈的安全学习。
| | | — | | $ docker pull pygoat/pygoat:latest $ docker run –rm -p 8000:8000 pygoat/pygoat:latest |
访问地址:http://localhost:8000/login
提示:占用 8000 端口(与 Pixi 冲突)。
12 SSRF 漏洞靶场(ssrf-vulnerable-lab)
专注服务器端请求伪造(SSRF)的靶场,提供文件读取、内网连接、文件下载、DNS 欺骗与 DNS Rebinding 绕过等多个练习场景。
| | | — | | $ docker pull youyouorz/ssrf-vulnerable-lab $ docker run -d –name ssrf-lab -p 9000:80 youyouorz/ssrf-vulnerable-lab |
访问地址:http://localhost:9000
提示:含 5 个 SSRF 场景与错误配置提示。占用 9000 端口。
13 VulnBank
模拟“不安全网银系统”的靶场,含转账、虚拟卡、贷款等业务,用于练习 SQL 注入、XSS 等在真实业务场景下的利用。
| | | — | | $ git clone https://github.com/Commando-X/vuln-bank.git $ cd vuln-bank $ docker-compose up |
访问地址:http://172.24.0.3:5000
提示:采用自定义 Docker 网络,访问地址为容器内网 IP,请以启动日志中 “Running on …” 的地址为准。
14 VulnLab
支持多语言界面的漏洞练习平台,按漏洞类型(XSS、SQL 注入等)组织关卡,场景真实、循序渐进。
| | | — | | $ docker pull yavuzlar/vulnlab $ docker run -d -p 1337:80 yavuzlar/vulnlab |
访问地址:http://localhost:1337
提示:占用 1337 端口。
15 OWASP WrongSecrets
聚焦“密钥 / 敏感信息管理”的靶场,通过一系列挑战演示硬编码密钥、Git 泄露、配置错误等反面案例,帮助重新审视密钥管理策略。
| | | — | | $ docker run -p 8080:8080 jeroenwillemsen/wrongsecrets:latest-no-vault |
访问地址:http://localhost:8080
提示:no-vault 版本无需额外基础设施;部分高级挑战需配合 Vault / K8s。占用 8080 端口。
16 Yrprey
模拟真实电商 / 收藏站点的漏洞靶场,用于练习 SQL 注入、XSS 等常见 Web 漏洞。
| | | — | | $ git clone https://github.com/yrprey/yrprey-application.git $ cd yrprey-application $ docker-compose -f .docker/dev/app.yaml -p yrprey up -d |
访问地址:http://localhost:3005
提示:使用自定义 compose 文件启动。占用 3005 端口。
17 Zero Health
模拟“不安全医疗系统”的靶场,内置 AI 组件(Ollama),用于练习 SQL 注入、XSS 等在医疗数据场景下的利用。
| | | — | | $ git clone https://github.com/aligorithm/zero-health.git $ cd zero-health $ docker-compose up |
访问地址:http://localhost:3000
提示:含数据库与 Ollama 容器。占用 3000 端口(与 Juice Shop 冲突)。
七、端口速查表
下表汇总了 17 个靶场的访问地址、默认端口与关键备注,便于快速查阅与排查端口冲突。
| 靶场 | 访问地址 | 端口 | 备注 | | — | — | — | — | | DVWA | /login.php | 8080 | admin/password;需初始化 DB | | Juice Shop | http://localhost:3000 | 3000 | 启动即用 | | VulnApp | http://localhost:80 | 80 | 多技术栈网关 | | WebGoat | /WebGoat/login | 8080 | 需注册;9090=WebWolf | | SQLi-Labs | http://localhost | 80 | 需初始化 DB | | bWAPP | /install.php | 80 | 先点 here 安装 | | Mutillidae II | http://localhost:80 | 80 | 可 Reset DB | | DVGA | http://localhost:5013 | 5013 | GraphQL | | DV RESTurant | http://localhost:8091/docs | 8091 | Swagger 文档 | | Pixi | http://localhost:8000/login | 8000 | MEAN 栈 | | PyGoat | http://localhost:8000/login | 8000 | Python/Django | | SSRF Lab | http://localhost:9000 | 9000 | SSRF 专项 | | VulnBank | http://172.24.0.3:5000 | 5000 | 自定义网络 IP | | VulnLab | http://localhost:1337 | 1337 | 多语言 | | WrongSecrets | http://localhost:8080 | 8080 | 密钥管理 | | Yrprey | http://localhost:3005 | 3005 | 自定义 compose | | Zero Health | http://localhost:3000 | 3000 | 含 Ollama |
端口冲突提示:80(VulnApp / SQLi-Labs / bWAPP / Mutillidae)、8080(DVWA / WebGoat / WrongSecrets)、8000(Pixi / PyGoat)、3000(Juice Shop / Zero Health)存在互相冲突,同组内一次只启动一个,或改用不同的宿主端口。
八、合规与安全提醒
漏洞靶场为红队与蓝队提供了宝贵的实战练习机会。将这些应用与 MITRE ATT&CK 框架对照,安全人员可以模拟真实攻击链并提升防御能力;而 Docker 让这些环境的部署变得简单、可复现。
•仅在本地或隔离网络中运行,切勿将靶场暴露到公网——它们是“故意不安全”的,极易被真实攻击者利用;
•仅对获得书面授权的目标进行测试;未经授权对他人系统进行扫描、注入或攻击,可能触犯《中华人民共和国网络安全法》《数据安全法》《刑法》第二百八十五、二百八十六条等相关规定;
•学习所得技术应用于防御、修复与合规评估,遵守职业道德与法律边界;
•用完及时清理:docker rm -f 删除容器、docker rmi 删除镜像,避免残留环境带来风险。
结语
无论是练习 XSS、SQL 注入,还是 API 滥用,始终遵循合法、授权、隔离三条原则。愿这份指南能帮助你搭建起属于自己的 Web 安全练习场,在合规的前提下持续精进。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:哪吒网络安全 钟智强 钟智强《基于 Docker 的 Web 漏洞靶场搭建全指南》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论