careb36/CentralBank-SecLand-Vulnerable
GitHub: careb36/CentralBank-SecLand-Vulnerable
一个基于Spring Boot构建的故意包含漏洞的网上银行应用,用于道德黑客研究、渗透测试实践和AI驱动的日志分析研究。
Stars: 2 | Forks: 1
# BancoCentral-SecLand-Vulnerable – 道德黑客实验室
本代码库包含 **"Banco Central de SecLand"** 的源代码,这是一个使用 Spring Boot (Java) 和 PostgreSQL 构建的刻意包含漏洞的网上银行应用程序。本项目的主要目标是作为**道德黑客研究和实践的实验室**,并作为硕士论文 (TFM) 的一部分,开发一个基于人工智能 (AI) 的异常检测模块。
## 目录
1. [项目目标](#project-objective)
2. [已实现的功能](#implemented-features)
3. [漏洞与安全实践](#vulnerabilities-and-security-practices)
4. [使用的技术](#technologies-used)
5. [如何开始](#how-to-get-started)
6. [API 接口](#api-endpoints)
7. [示例数据](#sample-data)
8. [许可证](#license)
## 项目目标
本项目旨在提供一个可控环境,以:
* 使用 **Kali Linux** 对常见的银行功能进行渗透测试。
* 研究并利用在代码和业务逻辑中故意引入的安全漏洞。
* 收集详细日志,用于训练和验证基于 AI 的异常检测模型。
* 作为硕士论文的原创研究平台,确保其漏洞不存在公开的“解决方案”。
## 已实现的功能
* **用户管理:** 客户注册和身份验证。
* **账户管理:** 创建储蓄账户和支票账户。
* **交易:** 账户间的资金转账。
* **RESTful API:** 所有功能通过 REST API 暴露。
* **混合安全性:** 结合了稳健的安全实践与故意引入的漏洞。
## 漏洞与安全实践
为了教学目的,该应用程序采用了混合安全态势设计。
### 故意引入的漏洞
* **A05:2021-失效的访问控制 (IDOR):** 转账接口 (`/api/accounts/transfer`) 存在 **不安全的直接对象引用 (IDOR)** 漏洞。它不检查认证用户是否拥有 `sourceAccountId`,允许攻击者仅通过知道 ID 就可以从任何账户转账资金。
* **业务逻辑缺陷:** 转账功能不验证源账户是否有足够资金,允许账户余额为负。
### 实施的安全实践(反面示例)
* **A02:2021-加密失败:** 为防止凭证泄露,系统**不以纯文本存储密码**。所有密码在保存到数据库之前均使用 **BCrypt** 算法进行哈希处理,遵循行业最佳实践。
## 使用的技术
* **后端:** Java 21, Spring Boot 3, Spring Security, Spring Data JPA
* **数据库:** PostgreSQL 15
* **构建工具:** Maven
* **容器化:** Docker, Docker Compose
* **测试:** JUnit 5, Postman
* **攻击平台:** Kali Linux
## 如何开始
项目已完全容器化,可轻松快速部署。
1. **前置条件:**
* 已安装并运行 [Docker Desktop](https://www.docker.com/products/docker-desktop)。
* 一个 Git 客户端。
2. **克隆并运行:**
# 克隆此 repository
git clone https://github.com/careb36/BancoCentral-SecLand-Vulnerable.git
# 进入 project directory
cd BancoCentral-SecLand-Vulnerable
# 使用 Docker Compose 启动 application 和 database
# --build flag 确保编译最新版本的代码
docker-compose up --build
应用程序将可以通过 `http://localhost:8080` 访问。
## API 接口
### 身份验证 (`/api/auth`)
* **注册新用户**
* **接口:** `POST /api/auth/register`
* **请求体:**
{
"username": "new_user",
"password": "a_secure_password",
"fullName": "Full Name"
}
* **登录**
* **接口:** `POST /api/auth/login`
* **请求体:**
{
"username": "existing_user",
"password": "your_password"
}
### 账户 (`/api/accounts`)
* **进行转账**
* **接口:** `POST /api/accounts/transfer`
* **请求体:**
{
"sourceAccountId": 101,
"destinationAccountId": 201,
"amount": 500.00,
"description": "Test transfer"
}
## 示例数据
数据库初始化了以下用于测试的用户和账户:
| Entity | ID | Details |
| :------ | :-: | :-------------------------------------------------------- |
| User | 1 | `username`: **carolina_p**, `password`: **password123** |
| User | 2 | `username`: **test_user**, `password`: **testpass** |
| Account | 101 | Type: Savings, Balance: 5000.75, Owner: `carolina_p` |
| Account | 102 | Type: Checking, Balance: 1250.00, Owner: `carolina_p` |
| Account | 201 | Type: Savings, Balance: 800.50, Owner: `test_user` |
## 许可证
本项目采用 MIT 许可证授权。有关详细信息,请参阅 [LICENSE](https://github.com/careb36/careb36-BancoCentral-SecLand-Vulnerable/blob/main/LICENCE) 文件。
标签:AI安全, BurpSuite集成, Chat Copilot, CISA项目, IDOR, OWASP Top 10, PostgreSQL, RESTful API, Spring Boot, Web安全, 域名枚举, 异常检测, 提示词优化, 漏洞靶场, 版权保护, 硕士学位论文, 网络安全, 蓝队分析, 请求拦截, 越权访问, 银行系统, 防御检测, 隐私保护