基于Docker的Web漏洞靶场搭建全指南

admin 2026-08-14 08:06:51 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文档是一份基于Docker的Web漏洞靶场搭建指南,详细介绍了17个主流靶场(如DVWA、JuiceShop、WebGoat等)的搭建方法、访问地址和实用提示。文档强调靶场仅用于合法授权环境下的渗透测试学习与安全研究,并提供了Docker安装、整体架构、分类总览及端口速查表。核心结论是Docker可快速部署隔离的漏洞环境,适合安全技能训练。可操作建议包括根据学习目标选择靶场并注意端口冲突。 综合评分: 83 文章分类: WEB安全,渗透测试,安全工具,安全培训,漏洞分析


cover_image

基于 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 漏洞靶场搭建全指南》

评论:0   参与:  0