OmarRao/analyzer
GitHub: OmarRao/analyzer
一个故意设计存在 400 多个安全漏洞的 Flask 银行应用,用于验证和基准测试安全扫描工具的检出能力。
Stars: 1 | Forks: 0
# VulnBank — 故意设计存在漏洞的银行应用
## ⚠️ 安全警告
**本应用包含故意设计的安全漏洞。**
- **切勿**部署到任何面向公众或生产环境中
- **切勿**使用真实的凭据、个人数据或财务信息
- **切勿**在本地计算机之外的可访问网络上运行
- 仅适用于:安全研究、扫描器验证、教育和 CTF 风格的练习
## 什么是 VulnBank?
VulnBank 是一个多模块的 Python/Flask 银行模拟系统,包含 **400 多个故意引入的安全发现**,涵盖 **22 个 CWE 类别**和 **12 种 MITRE ATT&CK 技术**。每个漏洞都在注释中标注了 CWE 和 ATT&CK 标识符,这使其非常适用于:
- 验证静态分析工具(Semgrep、CodeQL、Bandit、Snyk)
- 对像 [SecureScope](https://github.com/OmarRao/secure-scope) 这样的 AI 安全扫描器进行基准测试
- 安全培训和紫队演练
- 在安全的沙箱中演示真实的攻击模式
## 架构
```
VulnBank/
├── app.py # Core Flask app — auth, dashboard, admin, transfers
├── config.py # Hardcoded secrets, weak JWT config
├── models.py # ORM-style models with injection-prone raw SQL
├── utils.py # Shared utilities — XXE, weak crypto, path traversal
│
├── api/
│ ├── auth.py # Login, register, MFA bypass, SAML XXE, OAuth SSRF
│ ├── accounts.py # Account management — IDOR, CMDi, SSRF
│ ├── admin.py # Admin panel — unauthenticated, mass SQLi, pickle RCE
│ ├── files.py # File upload/download — unrestricted upload, traversal
│ ├── loans.py # Loan API — business logic abuse, injection
│ ├── payments.py # Payment processing — CSRF, race conditions
│ ├── reports.py # Reporting — CSV injection, XSS, path traversal
│ ├── transactions.py # Transaction history — IDOR, injection
│ └── users.py # User management — mass assignment, enumeration
│
├── services/
│ ├── crypto_service.py # Encryption — MD5, weak keys, ECB mode, hardcoded IV
│ ├── email.py # Email service — header injection, SSRF
│ ├── logger.py # Logging — log injection, sensitive data in logs
│ ├── notification.py # Push notifications — SSRF, template injection
│ └── search.py # Search — SQL injection, SSRF, XXE
│
├── middleware/
│ └── auth.py # Auth middleware — JWT confusion, bypass, weak secret
│
├── jobs/
│ └── scheduled.py # Cron jobs — command injection, path traversal
│
└── utils/
├── formatters.py # Output formatters — XSS, CSV injection, SSTI
└── validators.py # Input validators — bypass patterns, regex DoS
```
## 漏洞覆盖范围
### 注入
| CWE | 名称 | MITRE ATT&CK | 文件 |
|-----|------|--------------|-------|
| CWE-89 | SQL 注入 | T1190 | app.py, api/auth.py, api/accounts.py, api/admin.py, api/transactions.py, services/search.py |
| CWE-78 | 操作系统命令注入 | T1059 | app.py, api/accounts.py, api/admin.py, api/files.py, jobs/scheduled.py |
| CWE-79 | 跨站脚本攻击 (XSS) | T1059.007 | app.py, api/admin.py, api/files.py, utils/formatters.py |
| CWE-94 | 代码注入 | T1059 | app.py |
| CWE-611 | XML 外部实体 (XXE) | T1190 | utils.py, api/auth.py, services/search.py |
| CWE-1236 | CSV / 公式注入 | T1059 | api/reports.py, utils/formatters.py |
### 身份验证与访问控制
| CWE | 名称 | MITRE ATT&CK | 文件 |
|-----|------|--------------|-------|
| CWE-798 | 硬编码凭据 / API 密钥 | T1552.001 | app.py, config.py, api/auth.py, api/accounts.py, api/admin.py, api/files.py |
| CWE-285 | 授权不当 (IDOR) | T1548 | api/accounts.py, api/admin.py, api/files.py, api/users.py |
| CWE-347 | JWT 签名未验证 | T1190 | middleware/auth.py |
| CWE-284 | 管理员缺失身份验证 | T1548 | api/admin.py |
| CWE-208 | 时序攻击 / 用户名枚举 | T1590 | api/auth.py |
### 加密
| CWE | 名称 | MITRE ATT&CK | 文件 |
|-----|------|--------------|-------|
| CWE-327 | 弱加密 (MD5, ECB) | T1600 | utils.py, api/auth.py, services/crypto_service.py |
| CWE-916 | 密码哈希不足 | T1600 | app.py, api/auth.py |
| CWE-330 | 弱随机性 / 可预测 Token | T1552 | app.py, api/auth.py, config.py |
| CWE-312 | 敏感数据明文存储 | T1552 | api/auth.py, services/logger.py |
### 服务端与网络
| CWE | 名称 | MITRE ATT&CK | 文件 |
|-----|------|--------------|-------|
| CWE-918 | 服务端请求伪造 (SSRF) | T1090 | app.py, api/accounts.py, api/admin.py, api/auth.py, services/email.py |
| CWE-22 | 路径遍历 | T1083 | app.py, api/accounts.py, api/admin.py, api/files.py, jobs/scheduled.py |
| CWE-601 | 开放重定向 | T1566 | api/auth.py |
| CWE-434 | 无限制文件上传 | T1190 | api/files.py |
### 应用逻辑
| CWE | 名称 | MITRE ATT&CK | 文件 |
|-----|------|--------------|-------|
| CWE-352 | 缺失 CSRF 保护 | T1562 | app.py |
| CWE-502 | 不安全的反序列化 (Pickle RCE) | T1059 | app.py, api/admin.py |
| CWE-532 | 日志中的敏感数据 | T1552 | services/logger.py |
| CWE-209 | 详细的错误消息 | T1590 | 多个 |
## MITRE ATT&CK 覆盖范围
| 技术 | 名称 | VulnBank 中的示例 |
|-----------|------|----------------------|
| T1190 | 利用面向公众的应用 | SQLi 登录、XXE、文件上传 |
| T1059 | 命令和脚本解释器 | 操作系统命令注入、pickle RCE |
| T1059.007 | JavaScript 执行 (XSS) | 搜索中的反射型 XSS、管理员回显 |
| T1548 | 滥用提权控制机制 | 无身份验证的管理员 endpoint、IDOR |
| T1552 | 不安全的凭据 | 配置中的硬编码密钥、明文日志 |
| T1552.001 | 文件中的凭据 | 源代码中的 API 密钥、数据库密码、AWS 密钥 |
| T1083 | 文件和目录发现 | 读取日志中的路径遍历、文件下载 |
| T1090 | 代理 | 对内部服务的 SSRF、webhook SSRF |
| T1562 | 削弱防御 | 缺失 CSRF、身份验证绕过 |
| T1566 | 钓鱼 (重定向) | OAuth 回调中的开放重定向 |
| T1600 | 弱化加密 | MD5 密码、ECB 加密模式 |
| T1021.004 | 远程服务:SSH | 通过管理面板中 SSH 的 CMDi |
## 快速开始
```
# 克隆
git clone https://github.com/OmarRao/analyzer.git
cd analyzer
# 安装依赖
pip install -r requirements.txt
# 运行(绑定到 0.0.0.0:5000 — 仅限本地)
python app.py
```
默认测试凭据(故意硬编码):
| 用户 | 密码 | 角色 |
|------|----------|------|
| admin | admin123 | admin |
| alice | password1 | user |
| bob | letmein | user |
## 配合 SecureScope 使用
VulnBank 是 [SecureScope](https://github.com/OmarRao/secure-scope) 的标准测试目标。要对其进行扫描:
1. 启动 [SecureScope](https://github.com/OmarRao/secure-scope) (`python -m ui.server`)
2. 在扫描向导中输入 `https://github.com/OmarRao/analyzer`
3. 选择您首选的 LLM 进行修复建议
4. 查看生成的报告 — 它会将每个发现映射到 MITRE ATT&CK v14、CWE 和 OWASP
预先生成的示例报告可在以下地址获取:
**[docs/sample_report.pdf](https://github.com/OmarRao/secure-scope/blob/main/docs/sample_report.pdf)**
## 发布版本
| 版本 | 日期 | 说明 |
|---------|------|-------|
| [v2.0.0](https://github.com/OmarRao/analyzer/releases/tag/v2.0.0) | 2026-06-15 | 多模块扩展 — 400+ 个发现、API 层、服务、middleware、任务 |
| [v1.0.0](https://github.com/OmarRao/analyzer/releases/tag/v1.0.0) | 2026-06-09 | 初始版本 — 核心 Flask 应用,12 个 CWE 类型 |
标签:CISA项目, Flask, HTTP工具, Python, SAST测试靶标, Web安全, 安全靶场, 插件系统, 无后门, 漏洞演练平台, 蓝队分析, 逆向工具