MatheusLeo26/simulador-ataques-API-s
GitHub: MatheusLeo26/simulador-ataques-API-s
一款基于 OpenAPI 规范的 RESTful API 安全测试工具,通过自动化模糊测试帮助开发者验证 OWASP API 安全漏洞。
Stars: 0 | Forks: 0
# 🛡️ API Attack Simulator 与 Security Fuzzer
一款健壮且模块化的 API 攻击模拟器与自动化 fuzzer,使用 **Python** 和 **Playwright** 编写。专为希望验证其 endpoint 是否具备抵御 OWASP API Security Top 10 中所描述的经典漏洞的能力的 AppSec 专业人士和开发者而设计。
## 🚀 当前功能
- **自动路由映射**:解析 OpenAPI/Swagger 规范(JSON/YAML),递归解析 `$ref` 引用,并构建路由、query 参数和 body。
- **Playwright HTTP 引擎**:采用 Playwright 的 `APIRequestContext` 异步触发请求,模拟合法浏览器客户端的行为。
- **内置扫描模块**:
- **缺乏 Rate Limiting**:触发并发批量请求,以验证服务器是否使用 `429 Too Many Requests` 状态阻止滥用请求。
- **IDOR (Insecure Direct Object Reference)**:识别动态路由参数(如 ID 或 UUID)并篡改其值,以验证服务器是否在没有适当验证(HTTP 200)的情况下暴露受限数据。
- **Logic & Input Breaking Fuzzing**:注入经典的转义 payload(引号、SQLi、命令注入、递归),并监控内部未处理的错误(HTTP 500)或原始 stack trace 泄露的发生。
- **动态 JSON Body Mutator**:识别 POST/PUT 路由中预期的 body schema,并以递归方式逐键地将攻击 payload 精准注入到深层结构中。
- **交互式高级报告**:生成结构化格式(JSON)和高级可视化格式(HTML)的完整报告,其中包含详细的漏洞数据和修复指南。
## 📁 项目结构
```
api_fuzzer/
├── core/
│ ├── parser.py # Conversor de OpenAPI para objetos de teste
│ ├── client.py # Gerenciador de requisições Playwright
│ ├── runner.py # Orquestrador assíncrono de varredura
│ └── reporter.py # Gerador de relatórios JSON/HTML premium
├── modules/
│ ├── base.py # Classe abstrata para novos módulos
│ ├── rate_limit.py # Módulo de testes de taxa limite
│ ├── idor.py # Módulo de verificação de IDOR
│ └── logic_breaking.py# Fuzzer de injeções e erros não tratados
└── utils/
└── payloads.py # Base de dicionários de fuzzing e ataques
```
## 🛠️ 安装与运行
### 前置条件
- Python 3.8 或更高版本
- Pip(包管理器)
### 步骤
1. 安装 `requirements.txt` 中列出的依赖项:
pip install -r requirements.txt
2. 为 Playwright 安装 Chromium 浏览器驱动:
playwright install chromium
### 运行扫描(默认模式)
针对本地文档和目标 API 测试该工具:
```
python api_fuzzer/main.py --spec mock_openapi.json --target http://localhost:8000
```
*注意:您也可以使用多个手动身份验证标头,例如:*
```
python api_fuzzer/main.py --spec mock_openapi.json --target http://localhost:8000 --header "Authorization: Bearer "
```
### 🔒 自动化动态身份验证(Playwright)
如果您的 API 需要登录且 token 很快过期,fuzzer 可以模拟浏览器并为您完成登录!它会拦截网络,并将捕获的 token/cookie 嵌入到请求中:
```
python api_fuzzer/main.py \
--spec mock_openapi.json \
--target http://localhost:8000 \
--auth-url http://localhost:8000/login \
--auth-user seu_usuario \
--auth-pass sua_senha \
--auth-type bearer
```
### 🖥️ 交互式 Web 控制面板(Dashboard)
现在,您无需使用命令行,即可通过浏览器管理扫描、实时查看日志并分析交互式图形报告!
- **新功能:** 直接在 Dashboard 中从 URL 导入 OpenAPI 规范,无需手动下载 JSON 文件!
启动 Web 控制面板:
```
python web_app.py
```
在浏览器中访问:**`http://localhost:8080`**
## 📊 输出报告
- **`report.json`**:非常适合在 CI/CD pipeline 中消费或与其他安全工具集成的格式。
- **`report.html`**:采用深色模式的现代化面板,提供关于所发现安全问题的交互式统计和缓解建议。
## 🔒 安全加固(Web Dashboard)
为确保应用程序已准备好应对生产环境并防止数据泄露或未经授权的访问,已采取了以下安全措施:
- **基于 JWT 的强身份验证(JSON Web Tokens)**:访问 Web Dashboard 需受登录保护。JWT token 存储在安全的 cookie 中,带有 `HttpOnly`(使第三方脚本/XSS 无法访问)、`Secure`(仅限 HTTPS)和 `SameSite=Strict`(防范 CSRF)指令。
- **通过 API Keys 进行自动化**:Endpoint 和 CLI 已准备好使用 `X-API-Key` 标头进行自动化操作,允许将 fuzzer 安全地集成到 CI/CD pipeline 或外部脚本中,而无需交互式登录流程。
- **即时阻断机制(Kill Switch)**:集成了环境变量 `SISTEMA_BLOQUEADO`。当设置为 `true` 时,所有服务器路由和功能都会被 middleware 立即阻断,在紧急情况下瞬间屏蔽系统免受外部访问。
- **前端主动防范 XSS**:使用安全的 DOM 方法(`textContent`、`createElement` 和 `appendChild`)替换基于 `innerHTML` 的易受攻击的渲染方式,确保将具有潜在危险的 payload 和扫描结果严格作为无害文本处理。
- **安全的日志记录**:在后端实现了结构化和净化的日志,避免了在日志文件中泄露 token、密码或敏感的会话信息。
- **源代码和 Source Maps 保护**:阻止对 `.map`、`.ts`、`.tsx`、`.jsx`、`.vue` 和 `.svelte` 文件的请求,以防止暴露前端的内部结构。
- **严格的 CORS**:Cross-Origin 策略仅限于应用程序自身的安全本地源,以防止第三方域名进行未经授权的连接和请求。
- **Content Security Policy (CSP)**:强大的 HTTP 标头,将脚本执行和连接限制为仅限已映射和安全的源,从而降低 XSS 风险。
- **会话安全**:自动清理任何本地存储,并确保不会在 `localStorage` 或 `sessionStorage` 中暴露任何 token 或敏感数据。
- **补充安全标头**:包含 `X-Content-Type-Options: nosniff`(保护 MIME 类型)、`X-Frame-Options: DENY`(防范 Clickjacking)和 `Referrer-Policy: strict-origin-when-cross-origin`。
- **生产环境变量准备**:已准备好通过系统环境变量(`os.environ`)与云平台集成,消除了代码仓库中任何硬编码的机密信息。
标签:API安全, CISA项目, JSON输出, Playwright, Python, 多模态安全, 安全测试, 密码管理, 攻击性安全, 无后门, 特征检测, 逆向工具