alfredang/pentest
GitHub: alfredang/pentest
模拟虚构银行环境的安全训练靶场,帮助学习者在沙箱中实践发现和修复 OWASP Top 10 漏洞。
Stars: 1 | Forks: 0
# FauxBank — 银行网络安全渗透测试模拟
[](https://nextjs.org/)
[](https://react.dev/)
[](https://www.typescriptlang.org/)
[](https://tailwindcss.com/)
[](https://pentest-fauxbank.vercel.app)
[](#license)
**一个安全、封闭的训练实验环境,用于在虚构的网络银行上学习 OWASP Top 10 漏洞。**
[在线演示](https://pentest-fauxbank.vercel.app) · [报告 Bug](https://github.com/alfredang/pentest/issues) · [请求功能](https://github.com/alfredang/pentest/issues)
## 截图

## 关于
FauxBank 是一个现代化的 Next.js 训练实验环境,它模拟了一个虚构的网络银行,并包含故意设计的易受攻击模块。学习者可以在沙箱内完全实践发现、记录和修复常见的 Web 应用程序安全问题。
### 主要功能
| 功能 | 描述 |
|---|---|
| **虚构的银行门户** | 仪表板、账户、转账、个人资料、贷款、支持、管理员 |
| **引导式渗透测试模式** | 6 个带有提示和进度跟踪的循序渐进的 OWASP 场景 |
| **模拟扫描器** | 严重程度、证据、修复建议、OWASP 类别 —— 无外部流量 |
| **学习者仪表板** | 分数、已完成场景、花费时间、已用提示 |
| **讲师仪表板** | 切换漏洞、重置进度、将发现导出为 CSV |
| **渗透测试报告生成器** | 包含执行摘要、发现和修复建议的打印版 PDF 报告 |
| **深色银行风格 UI** | Tailwind、响应式、无障碍、每页带有训练横幅 |
### 模拟漏洞(仅限实验环境,可恢复)
| # | 课程 | 模块 |
|---|---|---|
| 1 | 访问控制失效 (IDOR) | `GET /api/accounts/[id]` |
| 2 | 弱认证 / 无锁定 | `/login` |
| 3 | 支持工单中的存储型 XSS | `/support` |
| 4 | 敏感数据暴露 | `/api/profile` |
| 5 | 管理员配置错误 | `/admin` |
| 6 | 模拟 SQL 注入 | `/api/search` |
| 7 | 转账缺少 CSRF | `/api/transfer` |
| 8 | 审计日志不足 | global |
## 技术栈
| 类别 | 技术 |
|---|---|
| **前端** | Next.js 16 (App Router), React 19, TypeScript |
| **样式** | Tailwind CSS |
| **后端** | Next.js Route Handlers (Node.js) |
| **数据** | 内存模拟存储(无原生数据库依赖) |
| **认证** | 基于 Cookie 的模拟会话 |
| **部署** | Vercel |
## 架构
```
┌────────────────────────────────────┐
│ Browser (Learner / Admin) │
└──────────────┬─────────────────────┘
│
HTTPS, simulated session cookie
│
▼
┌────────────────────── Next.js App Router ──────────────────────┐
│ │
│ ┌── Public ──┐ ┌──────── (bank) Layout ────────┐ │
│ │ / │ │ /dashboard /accounts │ │
│ │ /login │ │ /transfer /profile /loans │ │
│ │ /disclaimer│ │ /support /admin │ │
│ └────────────┘ │ /lab /scanner /learner │ │
│ │ /report /instructor │ │
│ └───────────────┬───────────────┘ │
│ │ │
│ ┌─────────────── Route Handlers (/api) ───────────────────┐ │
│ │ auth · accounts · transfer · search · support · profile │ │
│ │ loans · scanner · findings · learner · instructor │ │
│ └────────────────────────┬────────────────────────────────┘ │
│ │ │
│ ┌─── lib/ ──────┴──────┐ │
│ │ db (in-memory) │ │
│ │ auth │ │
│ │ scenarios │ │
│ │ scanner │ │
│ └──────────────────────┘ │
└────────────────────────────────────────────────────────────────┘
```
## 项目结构
```
pentest/
├── app/
│ ├── (bank)/ # Authenticated portal (sidebar layout)
│ │ ├── dashboard/ accounts/ transfer/ profile/
│ │ ├── loans/ support/ admin/
│ │ └── lab/ scanner/ learner/ report/ instructor/
│ ├── api/ # Route handlers
│ │ ├── auth/ accounts/ transfer/ search/ support/
│ │ ├── profile/ loans/ scanner/ findings/
│ │ ├── learner/ instructor/
│ ├── login/ # Public pages
│ ├── disclaimer/
│ ├── layout.tsx
│ └── page.tsx # Landing
├── components/ # Sidebar, footer, banner, badges, page header
├── lib/ # db, auth, scenarios, scanner
├── public/
├── README.md
└── screenshot.png
```
## 快速开始
### 前置条件
- Node.js 20+
- npm
### 安装与运行
```
git clone https://github.com/alfredang/pentest.git
cd pentest
npm install
npm run dev
```
然后打开 [http://localhost:3000](http://localhost:3000)。
### 预设的虚构账户
| 用户名 | 密码 | 角色 |
|---|---|---|
| `alice` | `password` | customer |
| `bob` | `qwerty` | customer |
| `carol` | `letmein` | customer |
| `admin` | `admin` | admin |
| `trainer` | `trainer` | instructor |
所有凭据均为 **弱认证** 场景故意设置。请勿重复使用。
### 建议的工作流程
1. 阅读 **免责声明** 页面。
2. 以 `alice / password` 登录。
3. 打开 **漏洞实验室** 并完成各个场景。
4. 运行 **扫描器** 以对比您的发现。
5. 在 **报告** 页面添加发现并导出可打印的报告。
6. 以 `trainer / trainer` 登录,打开 **讲师仪表板** 以切换漏洞、重置学习者状态或导出发现为 CSV。
## 部署
### Vercel(推荐)
此项目部署在 **[pentest-fauxbank.vercel.app](https://pentest-fauxbank.vercel.app)**。要部署您自己的副本:
```
npm i -g vercel
vercel --prod
```
### Docker(可选)
```
docker build -t fauxbank .
docker run -p 3000:3000 fauxbank
```
## 安全与道德使用
- 仅包含虚构的用户和虚假的银行数据。
- 模拟漏洞仅存在于本实验环境中,可通过讲师开关或 `Reset entire lab` 恢复。
- 本应用 **不** 包含真实的黑客工具、恶意软件、凭据窃取或破坏性 payload。
- 模拟扫描器 **不** 执行任何外部网络流量。
- 请勿将在此学到的技术用于您不拥有或未获得明确授权测试的系统。未经授权访问计算机系统在大多数司法管辖区都是违法的。
## 贡献
1. Fork 本仓库
2. 创建功能分支 (`git checkout -b feature/amazing-scenario`)
3. 提交您的更改 (`git commit -m 'Add scenario X'`)
4. 推送到分支 (`git push origin feature/amazing-scenario`)
5. 发起一个 Pull Request
对于更大的想法,请先开一个[讨论](https://github.com/alfredang/pentest/discussions)。
## 许可证
仅限在授权的培训环境中用于教育目的。
## 开发者
**[Tertiary Infotech Academy Pte. Ltd.](https://www.tertiarycourses.com.sg/)**
## 致谢
- [OWASP Top 10](https://owasp.org/www-project-top-ten/) 提供漏洞分类法
- [Next.js](https://nextjs.org/), [React](https://react.dev/), [Tailwind CSS](https://tailwindcss.com/)
- 网络安全培训社区
如果此实验环境对您的培训有用,请 ⭐ **star 本仓库** 以支持它。
标签:CISA项目, CSRF, GraphQL安全矩阵, MITM代理, OPA, OSV, OWASP Top 10, React, Syscalls, Tailwind CSS, TypeScript, Vercel, Web安全, XSS, 全栈项目, 安全扫描器, 安全插件, 安全教育, 安全演练, 报告生成器, 教育平台, 沙盒靶场, 漏洞修复, 漏洞情报, 漏洞模拟, 网络安全, 网络安全培训, 网络安全实验, 自动化攻击, 蓝队分析, 银行安全, 隐私保护, 靶场