A Docker-based comprehensive web security training range. 37 modules with hidden Flags — 31 classic web vulnerabilities + 6 intranet-penetration modules reproduced from vulhub CVEs.
docker-compose up -d --build- PHP 靶场: http://localhost (PHP 7.4 + Apache)
- Java 靶场: http://localhost:8080 (Tomcat 9 + JDK 11)
- 边界机 (NET-06): http://localhost:8081 (Struts2 2.5.33)
默认账户: admin/admin123 · alice/alicepass · bob/bobpass123
数据库结构有更新时请完全重建:
docker-compose down -v && docker-compose up -d --build
| 类别 | 模块 | 难度 |
|---|---|---|
| 注入类 (10) | SQL 登录绕过 / UNION / 盲注 / 堆叠 / 二次注入 · 命令注入(2级) · eval 代码执行 · XPath 注入 · SSTI · WAF 回溯绕过 | 简单→困难 |
| 跨站与劫持 (4) | 反射/存储/DOM XSS · 点击劫持 | 简单→中等 |
| 请求伪造 (4) | CSRF · SSRF · CORS/JSONP · 开放重定向 | 简单→困难 |
| 反序列化 (3) | PHP __destruct Gadget · Java ysoserial CC 链 · Phar 元数据 | 困难 |
| 文件操作 (4) | 上传黑名单绕过 · LFI/RFI · 任意文件下载 · Java Servlet 穿越 | 简单→困难 |
| 认证与逻辑 (4) | JWT alg:none/弱密钥 · PHP 弱类型魔法哈希 · 信息泄露 · IDOR 等 | 简单→困难 |
| 协议与加密 (2) | XXE · 前端 AES 硬编码密钥 | 中等→困难 |
| 内网渗透 (6) | 见下方三层攻击链 | — |
第一层 边界突破 第二层 中间件横移 第三层 核心系统RCE
┌────────────────┐ ┌────────────────────┐ ┌──────────────────┐
│ NET-06 Struts2 │ │ NET-01 Redis 未授权 │ │ NET-03 Log4Shell │
│ 边界Web打点 │ → │ NET-04 ES 未授权+RCE │ → │ CVE-2021-44228 │
│ CVE-2023-50164 │ │ NET-02 Tomcat PUT │ │ (核心Java系统) │
│ NET-05 MySQL弱口令│ │ CVE-2017-12615 │ │ │
└────────────────┘ └────────────────────┘ └──────────────────┘
| 层级 | 模块 | vulhub 对应 | Flag |
|---|---|---|---|
| L1 边界突破 | NET-06 边界 Web RCE | struts2/s2-066 (CVE-2023-50164) | FLAG{NET06_S2066_EDGE_RCE} |
| L1 边界突破 | NET-05 MySQL 弱口令横向 | 弱口令通用场景 | FLAG{NET05_MYSQL_PIVOT} |
| L2 中间件横移 | NET-01 Redis 未授权 | redis/4-unacc | FLAG{NET01_REDIS_UNAUTH} |
| L2 中间件横移 | NET-04 ES 未授权+Groovy RCE | elasticsearch/CVE-2015-1427 | FLAG{NET04_ES_*} |
| L2 中间件横移 | NET-02 Tomcat PUT | tomcat/CVE-2017-12615 | FLAG{NET02_TOMCAT_PUT} |
| L3 核心系统RCE | NET-03 Log4j2 JNDI RCE | log4j/CVE-2021-44228 | FLAG{NET03_LOG4SHELL_RCE} |
内网 Redis / Elasticsearch 不对宿主机暴露端口,只能通过 SSRF 等跳板访问——模拟真实内网隔离。
每个模块藏一枚 Flag(共 37 枚),藏匿方式:/flag/*.txt 文件(需 RCE/文件类漏洞读取)、数据库 vault/intranet 表(需 SQL 注入)、利用成功后的页面回显、前端存储(Cookie/localStorage/JS 变量)、内网服务(Redis key / ES 索引)。
- 答案文档:
answer/flags.md(每枚 Flag 的详细获取步骤) - 漏洞原理详解:
answer/walkthrough.md
Docker Compose (vuln_network, 内网隔离)
┌────────────┐ ┌────────────┐ ┌─────────────────────┐
│ web :80 │ │ java :8080 │ │ edge :8081 (NET-06) │
│ PHP+Apache │ │ Tomcat 9 │ │ Struts2 边界机 │
└─────┬──────┘ └─────┬──────┘ └──────────┬──────────┘
│ │ │
│ ┌───────────┴────────────────────┴─────┐
│ │ mysql:3306 (root/123456 + intranet库) │
│ │ redis:6379 (未授权, 仅内网) │
│ │ elasticsearch:9200 (未授权, 仅内网) │
│ └──────────────────────────────────────┘
docker-compose down -vFor educational purposes and authorized testing only. Do not use against any system without explicit permission.
- Docker Desktop (or Docker Engine + Docker Compose)
- ~3 GB free disk space
MIT