Baymax-armed/voltmart-pentest-lab

GitHub: Baymax-armed/voltmart-pentest-lab

一个自托管的 Docker 化多应用渗透测试实验平台,包含四个故意存在漏洞的 Web 应用及约 200 个涵盖 OWASP Top 10 的实操练习。

Stars: 0 | Forks: 0

VoltMart — Multi-App Vulnerable Pentest Platform # ⚡ VoltMart — 多应用漏洞渗透测试平台 **四个真实且故意留有漏洞的 Web 应用 —— 一个电商商店、一家银行、一个金融 门户以及一个 SaaS 工作区 —— 均由同一个启动器统一管理。包含约 200 个涵盖 OWASP Top 10 的实操实验室, 涉及现代攻击类型(JWT、GraphQL、SSRF→cloud-metadata、密钥混淆)以及真实的业务逻辑漏洞。 每个实验室分为四个难度等级,从教科书级别的漏洞到修复后的代码应有尽有。** *一个自托管、Dockerized 的**渗透测试实验室**和 **OWASP Top 10** 训练场,专为 实操**Web 应用安全**练习而设计 —— 可作为现代版的 **DVWA** / **OWASP Juice Shop** 替代方案。* ![PHP](https://img.shields.io/badge/PHP-7.4_(EOL)-777bb4?logo=php&logoColor=white) ![MySQL](https://img.shields.io/badge/MySQL-5.7-4479a1?logo=mysql&logoColor=white) ![Docker](https://img.shields.io/badge/Docker-Compose-2496ed?logo=docker&logoColor=white) ![OWASP](https://img.shields.io/badge/OWASP-Top_10_+_LLM-000000) ![License](https://img.shields.io/badge/License-MIT-green) ![Status](https://img.shields.io/badge/use-localhost_only-critical)
### 👤 本项目适合谁? | 如果你是…… | ……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安全, 安全培训, 安全防御评估, 漏洞靶场, 版权保护, 蓝队分析, 请求拦截, 防御检测