RenanACS/meridian-bac-lab
GitHub: RenanACS/meridian-bac-lab
一个支持多业务领域切换的 Web 越权与 IDOR 漏洞实战训练靶场,通过贴近真实场景的挑战帮助安全学习者系统掌握 OWASP A01 类漏洞的发现与利用技术。
Stars: 0 | Forks: 0
# Meridian Lab — 越权与 IDOR 训练
一个故意带有漏洞、**支持领域插拔**的 Web 应用,用于练习越权(Broken Access Control,OWASP A01)和 IDOR,其场景与真实应用中的实际情况如出一辙——包含 UUID、连续的业务参考标识、可逆 token、Header 特性、GraphQL、批量赋值(Mass Assignment)等——而不是教科书式的 `/user/123`。
## “支持领域插拔”是什么意思
一个引擎,三种外观。访问控制漏洞完全相同;只有业务对象发生了变化,因此你学到的是*技术*(能够迁移到真实目标上的东西),而不是某个特定的应用。
```
npm install
npm run fintech # NeoBank Console — statements, account holders
npm run health # MedPort Portal — encounters, patients (PHI)
npm run ecommerce # ShopLab Seller — orders, customers
# 或:MERIDIAN_DOMAIN=health PORT=4000 node server.js
```
然后打开 **http://localhost:4000** 并登录。确切的演示登录信息会在启动时打印在服务器控制台中:
| 领域 | 品牌 | 登录邮箱 | 密码 |
|-------------|-----------------|-----------------------|-----------------|
| `fintech` | NeoBank Console | `alice@northwind.test`| `Sunshine2026!` |
| `health` | MedPort Portal | `alice@cedar.test` | `Sunshine2026!` |
| `ecommerce` | ShopLab Seller | `alice@acme.test` | `Sunshine2026!` |
你将从 **Alice** 的身份开始,她是*第一个*租户中一名低权限的 `member`。还存在另外两个租户(其中一个名为“Globex”,掌握着诱人的跨租户数据)。
业务对象的名称会根据领域发生变化:
| 引擎概念 | fintech | health | ecommerce |
|---------------------|----------------|------------------|------------------|
| 账单记录 | Statement (STM)| Encounter (ENC) | Order (ORD) |
| 账户 / 人员 | Account holder | Patient | Customer |
| 共享文档 | Document | Report | Invoice |
## 通关指南
1. 像平常一样浏览应用——它只会调用*预期的* endpoint。
2. 在你的浏览器前挂上代理(**Burp**)并篡改请求。
3. 每个漏洞在被成功利用后,都会产生一个 flag `MW{...}`。
4. 在 **★ Missions** 页面提交 flag(或通过 `POST /api/scoreboard/submit`)。
5. 目标和提示位于 **`MISSIONS.md`** 中。那里没有通关教程。
## 卡住了?
这里有一个加密的 **`SOLUTIONS.md`**,其中包含完整的通关指南。它包含剧透——只有在你想要答案时才打开它。(在导师模式下,除非你明确要求,否则我不会将其内容粘贴给你。)
## 布局
```
server.js wiring + the edge-gateway middleware
core/
store.js in-memory seed data (built from the active domain)
auth.js session JWT, unsigned ctx cookie, middlewares
challenges.js flag <-> weakness catalog
routes/ auth, resources (IDOR), admin (vertical/BFLA), graphql, scoreboard
domains/ fintech.js · health.js · ecommerce.js (the skins)
public/ login + single-page UI
lab-fs/ sandboxed fake filesystem (path-traversal target)
```
## 重置 / 重启
```
# Ctrl-C 停止 server,然后重新启动 — 全新数据,空的 scoreboard。
```
标签:CISA项目, GNU通用公共许可证, IDOR, MITM代理, Node.js, OPA, Web安全, 数据可视化, 自定义脚本, 蓝队分析, 越权漏洞, 靶场