alfredang/pentest

GitHub: alfredang/pentest

模拟虚构银行环境的安全训练靶场,帮助学习者在沙箱中实践发现和修复 OWASP Top 10 漏洞。

Stars: 1 | Forks: 0

# FauxBank — 银行网络安全渗透测试模拟 [![Next.js](https://img.shields.io/badge/Next.js-16-black?logo=nextdotjs)](https://nextjs.org/) [![React](https://img.shields.io/badge/React-19-61DAFB?logo=react&logoColor=white)](https://react.dev/) [![TypeScript](https://img.shields.io/badge/TypeScript-5-3178C6?logo=typescript&logoColor=white)](https://www.typescriptlang.org/) [![Tailwind CSS](https://img.shields.io/badge/Tailwind-3-38BDF8?logo=tailwindcss&logoColor=white)](https://tailwindcss.com/) [![部署于 Vercel](https://img.shields.io/badge/Vercel-deployed-black?logo=vercel)](https://pentest-fauxbank.vercel.app) [![许可证](https://img.shields.io/badge/License-Educational-blue)](#license) **一个安全、封闭的训练实验环境,用于在虚构的网络银行上学习 OWASP Top 10 漏洞。** [在线演示](https://pentest-fauxbank.vercel.app) · [报告 Bug](https://github.com/alfredang/pentest/issues) · [请求功能](https://github.com/alfredang/pentest/issues)
## 截图 ![Screenshot](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/0f5d597664010821.png) ## 关于 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, 全栈项目, 安全扫描器, 安全插件, 安全教育, 安全演练, 报告生成器, 教育平台, 沙盒靶场, 漏洞修复, 漏洞情报, 漏洞模拟, 网络安全, 网络安全培训, 网络安全实验, 自动化攻击, 蓝队分析, 银行安全, 隐私保护, 靶场