Baymax-armed/voltmart-pentest-lab
GitHub: Baymax-armed/voltmart-pentest-lab
一个自托管的 Docker 化多应用渗透测试实验平台,包含四个故意存在漏洞的 Web 应用及约 200 个涵盖 OWASP Top 10 的实操练习。
Stars: 0 | Forks: 0

# ⚡ VoltMart — 多应用漏洞渗透测试平台
**四个真实且故意留有漏洞的 Web 应用 —— 一个电商商店、一家银行、一个金融
门户以及一个 SaaS 工作区 —— 均由同一个启动器统一管理。包含约 200 个涵盖 OWASP Top 10 的实操实验室,
涉及现代攻击类型(JWT、GraphQL、SSRF→cloud-metadata、密钥混淆)以及真实的业务逻辑漏洞。
每个实验室分为四个难度等级,从教科书级别的漏洞到修复后的代码应有尽有。**
*一个自托管、Dockerized 的**渗透测试实验室**和 **OWASP Top 10** 训练场,专为
实操**Web 应用安全**练习而设计 —— 可作为现代版的 **DVWA** / **OWASP Juice Shop** 替代方案。*
-777bb4?logo=php&logoColor=white)





### 👤 本项目适合谁?
| 如果你是…… | ……VoltMart 能为你提供 |
|---|---|
| 🎓 刚入门 Web 应用安全的**学习者** | 一个安全、合法的环境去*真正利用*真实的漏洞 —— 而不仅仅是看幻灯片 |
| 🛡️ **渗透测试人员 / 红队成员** | 广泛且现代的攻击面,跨越 4 个技术栈以保持技能敏锐 |
| 🚩 **CTF 选手** | 用来专攻 OWASP Top 10、API、身份验证、SSRF 和逻辑漏洞的练习场 |
| 🧑🏫 **讲师 / 团队负责人** | 一个统一的控制台,可以为整个班级设置每个实验室的难度 |
### 📑 目录
[为什么选择 VoltMart?](#why-voltmart) · [四个应用](#the-four-apps) · [快速开始](#quick-start) ·
[默认账户](#default-accounts) · [难度机制](#how-difficulty-works) ·
[漏洞覆盖范围](#vulnerability-coverage) · [系统架构](#architecture) ·
[项目结构](#project-layout) · [致渗透测试人员与讲师](#for-pentesters--instructors) ·
[法律与道德规范](#legal--ethics)
## 为什么选择 VoltMart?
大多数漏洞靶场应用只会教你单一的技术栈和少数几类漏洞。VoltMart 是一个**平台**:
四个截然不同且功能完备的应用程序,共享同一个难度引擎,让你能按照真实项目的流程进行练习 ——
侦察新目标、梳理其功能、发现漏洞,然后研究修复方案。
- 🧩 **四个独立目标,一键开启。** 门户会在各自的标签页中启动每个应用 —— 拥有独立的
host、port、database 和登录凭证 —— 让你可以独立攻击每一个目标。
- 🎚️ **每个实验室有四个难度等级** —— `Low → Medium → High → Secure`。从教科书级别的
漏洞,到你可以绕过的天真/不完善的防御机制,再到作为补丁参考的**正确修复方式**。
讲师可以为整个班级设定难度等级。
- 🥷 **毫无“靶场”违和感。** 对学生来说,它看起来就像是一个正常的产品。答案和
控制选项都隐藏在一个受密码保护的讲师专属区域中。
- 🛠️ **真正存在漏洞的技术栈** —— Apache + **PHP 7.4** (mod_php) 以及在
**MySQL 5.7** 上运行的原始 `mysqli`,特意锁定在已停止维护的版本,因此注入和 RCE 都是
*真实的*,而非模拟的。
## 四个应用
打开 **portal** 并选择一个攻击面。每个应用都会在独立的标签页、拥有独立的 port 和登录凭证下打开。
| | 应用 | Port | 类型 | 你可以攻击的目标 |
|--|-----|------|---------|--------------------|
| 🛒 | **VoltMart Store** | `8090` | 电商 | 目录、购物车、多步骤结账、优惠券和礼品卡、钱包/BNPL、评论与问答、工单支持、市场、**AI 购物助手**、网页邮件、管理后台 |
| 🏦 | **VoltMart Bank** | `8091` | 零售银行 | 账户、转账、收款人、卡、账单支付、存款、贷款、对账单、KYC、外汇、后台 |
| 💹 | **VoltMart Capital** | `8092` | 贷款与理财 | 贷款、卡、投资、SIP、自选列表、支出、KYC、密码重置/ATO 流程 |
| ☁️ | **VoltMart Cloud** | `8093` | 多租户 SaaS | 组织与项目、RBAC 成员、计费、API key、webhook、**GraphQL**、自定义模板 (SSTI)、文件共享 |
| 🗂️ | **Portal** | `8080` | 启动器 | 在新标签页中打开每个应用 |
| 🔎 | **Adminer** | `8081` | 数据库浏览器 | 在成功实施 SQLi 后检查数据库 |
## 快速开始
```
git clone https://github.com/Baymax-armed/voltmart-pentest-lab.git
cd voltmart-pentest-lab
# 构建并运行所有内容(首次运行会拉取 images 并自动为每个 DB 填充种子数据)
docker compose up -d --build
# 打开 launcher
# Portal ........ http://localhost:8080
# DB browser .... http://localhost:8081 (server: db · user: root · pass: root)
# 停止
docker compose down
# 将所有内容重置为干净的初始 seed
docker compose down -v && docker compose up -d
```
需要带有 Compose 插件的 Docker Desktop / Docker Engine。每个应用都会**在首次请求时自动创建并
填充其专属的 database** —— 无需手动导入。
### 默认账户
登录凭证**不会**直接显示在登录页面上(找到它们本身就是练习的一部分)。预置的
账户在各个应用中都是相同的:
| 用户名 | 密码 | 角色 |
|----------|----------|------|
| `admin` | `admin123` | 管理员 |
| `alice` | `password123` | 用户 / 客户 |
| `bob` | `qwerty` | 用户 / 客户 |
| `carol` | `letmein` | 用户 / 客户 |
讲师控制台密码:**`instructor`**(可通过 `INSTRUCTOR_PASSWORD` 覆盖)。这些脆弱的
默认凭证本身就是课程学习的一部分。
## 难度机制
每个存在漏洞的代码路径都会从 database 中读取其实验室难度等级并进行分支处理:
| 等级 | 含义 |
|-------|---------|
| 🔴 **Low** | 无过滤 —— 教科书级别的漏洞。从这里开始。 |
| 🟠 **Medium** | 你可以绕过的初级防御(黑名单 / 错误的上下文转义)。 |
| 🔵 **High** | 较强但仍有缺陷的防御 —— 找出其中的破绽。 |
| 🟢 **Secure** | 正确的修复方案(prepared statements、输出编码、allow-lists、一次性 token)。**无法利用** —— 你的“如何修复”参考。 |
可以在每个应用的 `/lab.php`(Store 为:`/lab/`)的**讲师控制面板**中切换任意实验室(或全部实验室)的难度。
你设置的难度就是每个学生会话面临的攻击难度。
## 漏洞覆盖范围
包含数百个实验室,涵盖 **OWASP Top 10 (2021)**、**OWASP LLM Top 10**、经典 Web 漏洞、
现代 API/身份验证漏洞类别以及深层的业务逻辑。以下为部分精选:
**注入与输入** — SQLi(登录绕过、UNION/报错、二阶注入、**位于 WAF + 频率限制后的盲注/时间盲注**)、反射型/存储型/DOM XSS、OS 命令注入、LFI/RFI、**SSTI → RCE**、
**XXE**、CSV/公式注入、NoSQL 风格的类型混淆。
**访问控制与身份验证** — 随处可见的 IDOR/BOLA(订单、账户、对账单、消息、成员、
发票)、垂直提权、**通过 mass-assignment 自行注册为管理员**、CSRF、
**JWT 攻击**(`alg:none`、弱 HMAC、**`kid`/`jwk` 注入、RS256→HS256 密钥混淆**)、
**token 永不过期**、**会话固定**、**登出时 session 未失效**、
**谓词篡改**、可预测的重置 token 导致的**账户接管**、2FA/OTP 缺陷、
**脆弱/可绕过的 CAPTCHA**。
**SSRF 与云** — 获取 URL 的 SSRF,可触达**模拟的 IMDS / cloud-metadata 服务**并返回
**临时角色凭证**(真实的“SSRF → 窃取云凭证 → 横向移动”攻击链),以及
AWS 与 GCP 架构的元数据。
**API** — JWT 验证的 REST API + JWKS endpoint、**GraphQL**(内省、跨租户
**BOLA**、**未授权的 mutations**、无深度/成本限制 → DoS)、反射型 CORS、一个附带
curl 配方的开发者门户。
**配置错误** — 缺失/脆弱的**安全标头与 cookie 标志**(无 CSP/HSTS,无
`HttpOnly`/`SameSite`)、宽松的 **OPTIONS/TRACE** 方法 (XST)、暴露的 `.git`/备份/`phpinfo`、
版本 banners、目录列表。
**文件** — 无限制上传 → web shell、通过文件名进行路径遍历 (KYC)、通过 SVG 进行存储型 XSS、
**zip-slip** 压缩包解压 → RCE。
**业务逻辑** — 优惠券滥用与叠加、**礼品卡 / 即时提现的竞态双花漏洞
(TOCTOU)**、价格/数量/结账篡改、退款与积分滥用、BNPL 额度绕过、自批准
贷款、免费计划升级、推荐返利自刷、库存/限时抢购超卖竞态。
**🤖 AI / LLM** (Store) — 一个真实的 LLM 购物助手,包含 **prompt injection**、**不安全的
输出处理 → XSS**、**system-prompt 与敏感信息泄露**,以及 **excessive agency**。
如果未设置 `LLM_API_KEY`,则通过确定性的 stub 离线运行。
## 系统架构
```
┌──────────────────────────┐
:8080 ─────────►│ Portal (launcher) │
└──────────────────────────┘
:8090 Store :8091 Bank :8092 Capital :8093 Cloud
│ │ │ │
└──────────────┴──────┬───────┴───────────────┘
│ apps/shared (framework, JWT/WAF,
│ difficulty engine, CAPTCHA, IMDS…)
▼
┌──────────────────┐ ┌──────────────┐
│ MySQL 5.7 (:13306)│◄─────►│ Adminer :8081 │
│ vulnshop / vulnbank └──────────────┘
│ vulnfinance / vulnsaas │
└──────────────────┘
```
- 所有应用都运行**相同**的 `php:7.4-apache` 镜像(配置故意很薄弱)。
- 三个较新的应用共享 **`apps/shared/`** —— 这是一个可自定义主题的框架,提供了
难度引擎、身份验证、JWT/WAF/频率限制辅助工具、模拟的 IMDS 服务以及 CAPTCHA 验证拦截 ——
因此只需修改一次代码,就可以为所有应用添加同一个实验室。
- 每个应用都有其**独立的 database 和 session cookie**(独立的登录凭证)。
## 项目结构
```
voltmart/
├── docker-compose.yml # portal + store + bank + finance + saas + db + adminer
├── .env.example # optional overrides (DB creds, instructor pw, LLM key)
├── README.md SECURITY.md LICENSE CONTRACT.md
├── db/ # store schema + seed (auto-loaded on first run)
├── docs/ # VULNERABILITIES.md, SOLUTIONS.md, BURP-SETUP.md
├── PENTEST-GUIDE/ # methodology checklist + report template
├── apps/
│ ├── portal/ # the launcher (:8080)
│ ├── bank/ finance/ saas/ # the three framework apps (:8091–:8093)
│ └── shared/ # shared framework (difficulty, auth, JWT, WAF, IMDS, CAPTCHA…)
└── web/ # the e-commerce store (:8090) — Dockerfile + src/
```
## 致渗透测试人员与讲师
- **方法论与报告** — 在 **[PENTEST-GUIDE/](PENTEST-GUIDE/)** 中提供了分阶段的检查清单以及发现/报告模板。
- **Burp Suite** — 在 **[docs/BURP-SETUP.md](docs/BURP-SETUP.md)** 中提供了代理设置和工作流建议。
- **讲师控制选项** — 分应用难度仪表板、实时数据统计以及一键
*重置学生数据*按钮。在共享镜像前,请务必更改 `INSTRUCTOR_PASSWORD`。
## 法律与道德规范
VoltMart 旨在对您拥有或获得明确测试权限的系统进行**授权的、教育性的安全测试**。
请勿将这些技术用于您不拥有的系统。本项目按“原样”提供,**不提供任何保证**,
仅供学习使用。详情请参阅 **[LICENSE](LICENSE)** 和 **[SECURITY.md](SECURITY.md)**。
标签:CISA项目, Docker, ffuf, OWASP Top 10, Web安全, 安全培训, 安全防御评估, 漏洞靶场, 版权保护, 蓝队分析, 请求拦截, 防御检测