一个现代化的网络靶场,提供涵盖Web、API、云、AI和蓝队安全领域的50个动手挑战。具备引导式攻击链、透明AI模拟器以及GRC证据报告功能,用于学习渗透测试和防御技术。
一个现代化的易受攻击应用与网络靶场,用于通过动手攻击链学习 Web、API、云、 AI 和蓝队安全。
╔═══════════════════════════════════════════════════════════════╗
║ ██████╗ ███████╗███╗ ██╗████████╗███████╗███████╗████████╗ ║
║ ██╔══██╗██╔════╝████╗ ██║╚══██╔══╝██╔════╝██╔════╝╚══██╔══╝ ║
║ ██████╔╝█████╗ ██╔██╗ ██║ ██║ █████╗ ███████╗ ██║ ║
║ ██╔═══╝ ██╔══╝ ██║╚██╗██║ ██║ ██╔══╝ ╚════██║ ██║ ║
║ ██║ ███████╗██║ ╚████║ ██║ ███████╗███████║ ██║ ║
║ ╚═╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝ ╚══════╝╚══════╝ ╚═╝ ║
║ 现代化网络靶场 · 50个挑战 · 8个方向 ║
╚═══════════════════════════════════════════════════════════════╝
★ 如果这个仓库对您有帮助,请点个星标——这是免费的,还能帮助其他人发现免费的安全教育资源。
PENTEST-LAB 不是另一个单一漏洞的虚拟机。它是一个完整的网络靶场,将攻击者与防御者视角相结合,并生成 GRC 风格的证据输出:
[SYSTEM][USER][RETRIEVED][HISTORY] 上下文、生成的输出、检测到的注入技术以及每个缓解措施的开关。127.0.0.1,在 0.0.0.0 上大声警告,所有秘密均为伪造并明确标记,SSRF 目标为本地进程内模拟(无真实出站),无外部目标。make verify-registry 验证挑战注册表(唯一 ID/标志、必填字段、资源、提示数量),确保目录保持一致。# 1. 单行命令(安装依赖、初始化数据库、启动服务器)
python start_lab.py
# 或: make start
在浏览器中打开 **http://localhost:3000**。
# 仅后端
cd backend && npm install && npm start
# Docker(仅发布到 127.0.0.1)
docker compose up --build
# 重置已捕获的标志 / 事件 / 链式进度
make reset
# 刷新演示种子数据
make seed
# 冒烟测试核心路由(先启动靶场)
make test
# 验证挑战注册表(唯一 ID/标志、字段、资源)
make verify-registry
# 安全的本机漏洞利用演示(5个挑战)
python demo_exploit.py
每个挑战包含:ID、标题、方向、类别、难度、目标、漏洞端点、利用概念、3个递进式提示(模糊 → 具体 → 答案)、标志、修复措施、检测/证据说明、映射的控制域,以及解决前学习资源列表。
点击任何挑战卡片打开弹窗。它提供:
一个逼真的、完全本地的六步检测链:
侦察 → 信息泄露 → 凭证/令牌滥用 →
权限提升 → 敏感数据访问 → 证据报告
B=http://127.0.0.1:3000
curl -s $B/api/attack-chain/recon # 1. 调试端点泄露路由
curl -s $B/api/attack-chain/leak # 2. 泄露的假 JWT 密钥(weak123)
# 3. 伪造管理员令牌 -> 4. 提权 -> 5. 读取假客户记录 -> 6. 生成报告
curl -s $B/api/attack-chain/progress
在攻击链标签页中实时追踪进度。
防御者标签页显示攻击者刚刚执行的相同活动:最近的事件、失败的登录、可疑的 API 访问、文件上传、SSRF 尝试、提权尝试、捕获的标志以及攻击链进度——每个事件按严重性着色,捕获的标志用 🚩 标记。
curl -s http://localhost:3000/api/blue-team/dashboard
根据您捕获的标志生成报告,将每个标志映射到一个发现,包含严重性、受影响的端点、证据、业务影响、修复措施、控制域和检测机会。
# Markdown(默认)
curl -s -X POST http://localhost:3000/api/evidence/report \
-H 'Content-Type: application/json' -d '{"format":"markdown"}'
# JSON 或 CSV
curl -s -X POST http://localhost:3000/api/evidence/report -d '{"format":"csv"}'
# 映射的控制域:访问控制、日志与监控、
# 安全开发、秘密管理、变更管理、
# 配置管理、数据保护、事件响应。
⚠️ 这是用于检测/GRC 学习的宽泛控制域映射。它并未断言符合任何标准。
| 方向仪表板 | 攻击链 |
| 防御者视图 | 证据报告 |
🎬 演示 GIF: docs/demo.gif - 请参阅 docs/DEMO_WALKTHROUGH.md 获取约6分钟的讲解脚本。(将您自己的截图放入 docs/screenshots/ 和 docs/demo.gif 以替换占位符。)
此靶场故意存在漏洞。请仅在隔离环境中运行,切勿暴露到互联网。
127.0.0.1(backend/.env 中的 HOST=127.0.0.1)。HOST=0.0.0.0 会打印响亮警告;UI 显示危险横幅。├── start_lab.py # 一键启动器(依赖 + 种子 + 运行)
├── demo_exploit.py # 安全的本机漏洞利用演示(5个挑战)
├── docker-compose.yml # 仅 localhost 发布
├── Makefile # install / start / reset / test / demo / docker
├── CHALLENGES.md # 完整挑战目录
├── frontend/ # 仪表板 UI(方向、链、防御者、证据)
├── backend/
│ ├── server.js # Express 应用,localhost 绑定,路由接线
│ ├── challenges/registry.js # 集中式挑战注册表(50个挑战)
│ ├── ai/ # 透明的 AI 模拟器 + RAG 存储(无外部 LLM)
│ ├── utils/events.js # 集中式事件存储 + 蓝队反馈
│ ├── routes/ # 漏洞 + 模式路由(api, cloud, ai, shop, ...)
│ ├── scripts/ # init-db, seed, reset, test_routes
│ └── middleware/ # auth(安全)、auth.vulnerable、waf、security
├── solutions/ # Python 漏洞利用解决方案
└── docs/ # SECURITY_REPORT, SETUP, DEMO_WALKTHROUGH
发现 bug 或想添加挑战?欢迎提交 PR。
backend/challenges/registry.js 添加新挑战(单一数据源)。events.captureFlag({ flag, req }) 发射标志。make test 和 make verify-registry。仅限教育用途。如存在 LICENSE 文件,请参阅。仅对您拥有或明确授权测试的系统使用——此处指本本地靶场。
如果这个靶场帮助您学到了新东西:
| 方向 | 学习内容 | 数量 |
|---|
| ◆ Web 应用渗透测试 | SQL 注入、IDOR、文件上传、路径遍历、WAF 绕过 | 14 |
| ◆ API 安全 | BOLA、批量赋值、速率限制绕过、Webhook、GraphQL、CORS 反射、NoSQL 注入 | 7 |
| ◆ 认证与会话 | JWT kid/alg 混淆、刷新令牌重用、重置令牌、会话固定、MFA、主机头重置投毒 | 9 |
| ◆ 云/DevOps | .env 泄露、SSRF 元数据、Docker 调试、公共存储、CI/CD 令牌 | 5 |
| ◆ AI 安全 | 提示注入、间接注入、RAG 泄露/投毒、工具调用、多轮越狱、输出过滤绕过 | 7 |
| ◆ 业务逻辑 | 优惠券叠加、负数数量、竞争条件、支付绕过 | 5 |
| ◆ 攻击链 | 引导式端到端路径 + 遗留全链 RCE,附带证据 | 2 |
| ◆ 蓝队证据 | 检测攻击并生成 GRC 报告 | 1 |
| 50 |