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安全, 安全靶场, 插件系统, 无后门, 漏洞演练平台, 蓝队分析, 逆向工具