venantvr-security/Python.HAR.ZAP
GitHub: venantvr-security/Python.HAR.ZAP
将 HAR 流量分析与 OWASP ZAP 深度整合的企业级 DAST 平台,支持红队攻击模拟、IDOR 检测和 CI/CD 安全门禁集成。
Stars: 0 | Forks: 0
# DAST 安全平台
企业级动态应用安全测试 (DAST) 平台,支持 OWASP ZAP 编排、Red Team 进攻性测试、IDOR 检测以及 CI/CD 集成。
## 功能特性
### 核心能力
- **HAR 情报分析**:智能解析,支持可模糊测试参数检测和认证信息提取
- **Docker 编排**:自动化的 ZAP 生命周期管理
- **Red Team 攻击**:进攻性安全测试(未授权重放、批量赋值、隐藏参数)
- **被动分析**:非侵入式安全检查(Headers、PII 泄露、Token 熵值)
- **IDOR 检测**:多会话跨用户测试,提供可视化差异证明
- **OpenAPI 导入**:从 Swagger/OpenAPI 规范自动发现 Endpoint
- **高级认证**:支持表单、OAuth2、JWT、HTTP Basic/Digest
- **验收引擎**:定义安全标准,支持 CI/CD 快速失败模式
### 攻击向量
#### Red Team (进攻性)
- **未认证重放 (Unauthenticated Replay)**:测试是否可以移除认证 Headers(严重)
- **批量赋值 (Mass Assignment)**:注入权限提升参数(`{"role": "admin"}`)
- **隐藏参数 (Hidden Parameters)**:发现调试/管理模式开关(`?debug=true`)
- **竞态条件 (Race Conditions)**:识别 TOCTOU 漏洞(转账/优惠券 Endpoint)
#### 被动 (非侵入式)
- **安全 Headers**:HSTS, CSP, X-Frame-Options, Secure/HttpOnly Cookies
- **敏感数据**:基于正则表达式的 PII、API Key、JWT、密码、SSN、信用卡检测
- **Token 熵值**:Shannon 熵值分析,用于评估会话可预测性
- **堆栈跟踪**:检测错误响应中的信息泄露
### 新特性
#### HAR 预处理(统一流水线)
- **单次提取**:Endpoints、Payloads、Querystrings、字典
- **高级过滤**:Methods、Domains、Content-Types、Status Codes、静态资源排除
- **导出格式**:统一 JSON 或细粒度组件文件
- **Token 提取**:从流量中智能生成模糊测试字典
#### 字典与 Payload 系统
- **PayloadAnalyzer**:Schema 提取、键值对分析、模板构建
- **PayloadReconstructor**:攻击 Payload 生成(批量赋值、注入、模糊测试)
- **DictionaryManager**:可扩展字典,支持自定义扩展
### 接口
- **Streamlit Web UI**:直观的仪表板,包含 9 个专用标签页
- **CLI**:对 CI/CD 友好,支持 JUnit/SARIF 导出
- **Legacy CLI**:保留原始 orchestrator.py 以实现向后兼容
## 安装
```
pip install -r requirements.txt
```
## 使用方法
### Web 界面(推荐)
```
streamlit run app.py
```
访问地址:http://localhost:8501
标签页:
1. **上传与配置**:HAR 上传、作用域/排除规则、攻击类型选择
2. **HAR 预处理**:统一的 HAR 处理,支持过滤、提取、导出
3. **ZAP 扫描**:传统的 OWASP ZAP 主动/被动扫描
4. **ZAP Fuzzer**:使用从 HAR 中提取的 Token/ID 进行智能模糊测试
5. **IDOR 测试**:多会话跨用户访问控制测试
6. **Red Team**:进攻性安全攻击(认证绕过、权限提升)
7. **被动扫描**:非侵入式安全分析(Headers、泄露、熵值)
8. **结果**:统一查看所有发现,支持严重程度过滤
9. **验收**:为 CI/CD 集成定义通过/失败标准
### CI/CD 集成
```
# 如果存在任何高严重性警报则 Fail build
python cli.py scan traffic.har --max-high 0 --fail-fast
# 带退出码的 IDOR 检测
python cli.py idor --session-a user1.har --session-b user2.har --fail-on-idor
# 为 GitHub Security 导出 SARIF
python cli.py scan traffic.har --format sarif --output results.sarif
# 用于 Jenkins/GitLab 的 JUnit XML
python cli.py scan traffic.har --format junit --max-high 0 --max-medium 5
```
### Legacy CLI
```
python orchestrator.py captured_traffic.har -c config.yaml -o ./reports
```
## 配置
编辑 `config.yaml`:
```
scope_domains:
- "example.com"
- "api.example.com"
exclude_domains:
- "google-analytics.com"
- "cdn.jsdelivr.net"
allowed_methods:
- GET
- POST
- PUT
- DELETE
zap_port: 8080
scan_fuzzable_urls: true
scan_api_endpoints: true
```
## Red Team 测试
### 未认证重放 (CRITICAL)
测试在移除认证 Headers 后 Endpoint 是否仍可访问。
**检测逻辑:**
- 提取带有 `Authorization`/`Cookie` Headers 的请求
- 在不带认证 Headers 的情况下重放
- 如果满足以下条件则判定为易受攻击:HTTP 200 + content_length > 100 bytes + 状态与原始响应匹配
**示例输出:**
```
🚨 CRITICAL: https://api.example.com/user/profile accessible without auth!
Confidence: 87%
Evidence: Status 200, Content: 2.3KB (original: 2.4KB)
```
### 批量赋值 (Mass Assignment)
向 POST/PUT/PATCH 请求注入权限提升参数。
**测试 Payload:**
```
{
"role": "admin"
}
{
"is_admin": true
}
{
"permissions": [
"admin",
"write",
"delete"
]
}
{
"balance": 999999
}
```
**判定标准:** 服务器接受 Payload(HTTP 200/201)且不返回错误消息
### 隐藏参数 (Hidden Parameters)
发现在正常流量中不可见的调试/管理参数。
**常见测试参数:**
- `?debug=true`
- `?admin=1`
- `?test=yes`
- `?show_errors=true`
**检测方法:** Content-length 与基线差异 > 100 bytes
### 被动分析
**安全 Headers:**
- 缺失:HSTS, CSP, X-Frame-Options, X-Content-Type-Options
- 弱 CSP:`unsafe-inline`, `unsafe-eval`, 通配符来源
- 不安全的 Cookies:缺少 `Secure` 或 `HttpOnly` 标志
**敏感数据扫描器:**
正则表达式模式用于检测:
- 电子邮件地址、电话号码、SSN
- 信用卡号(违反 PCI-DSS)
- API Key(AWS: `AKIA[0-9A-Z]{16}`)
- JWT Token、响应中的密码
- 私钥 (RSA/EC)
**Token 熵值分析:**
- Shannon 熵值计算
- 标记熵值 < 4.0 bits 或长度 < 16 chars 的 Token
- 严重程度:如果 < 3.0 bits 则为 CRITICAL
## IDOR 检测
上传两个来自不同认证会话的 HAR 文件:
**通过 Web UI:**
1. 导航到 "IDOR Testing" 标签页
2. 上传 Session A (User A)
3. 上传 Session B (User B)
4. 配置并行 Workers
5. 运行检测
**通过 CLI:**
```
python cli.py idor \
--session-a admin.har \
--session-b standard_user.har \
--workers 10 \
--fail-on-idor
```
结果包括:
- 置信度分数(content-length 比率 > 50%)
- 可视化 HTTP 差异(基线 vs 测试)
- 用于手动复现的 cURL 命令
- 启发式判断:Status 200 + 显著内容 = IDOR
## 验收标准
在 Web UI 或通过 CLI 定义安全要求:
**标准类型:**
- `max_high`:最大高危警报数量(ZAP + Red Team)
- `max_medium`:最大中危警报数量
- `no_idor`:无 IDOR 漏洞
- `no_sql_injection`:无 SQL 注入
- `no_xss`:无 XSS 漏洞
- `clean_url`:特定 URL 模式必须通过检查
- `no_unauth_access`:所有认证 Endpoint 需要有效凭证
- `min_token_entropy`:最小 Token 熵值阈值(bits)
**示例 CI/CD 流水线:**
```
# .gitlab-ci.yml
security_scan:
script:
- python cli.py scan traffic.har --max-high 0 --max-medium 5 --fail-fast
artifacts:
reports:
junit: output/junit.xml
```
## 输出格式
### JSON(详细)
```
python cli.py scan traffic.har --format json
```
包含 Payload 和证据的完整漏洞详情。
### SARIF(GitHub Security)
```
python cli.py scan traffic.har --format sarif
```
上传到 GitHub Code Scanning 进行问题跟踪。
### JUnit XML(CI/CD)
```
python cli.py scan traffic.har --format junit --max-high 0
```
用于 Jenkins/GitLab/CircleCI 的测试结果格式。
### HTML(人类可读)
```
python cli.py scan traffic.har --format html
```
ZAP 原生 HTML 报告,包含图表。
## 高级功能
### OpenAPI/Swagger 导入
```
from modules.openapi_importer import OpenAPIImporter
importer = OpenAPIImporter(zap_client)
importer.load_from_url('https://api.example.com/swagger.json')
endpoints = importer.parse_endpoints()
importer.import_to_zap(target_url='https://api.example.com')
```
### 自定义认证
```
from modules.advanced_zap_config import AdvancedZAPConfig
config_mgr = AdvancedZAPConfig(zap_client)
config_mgr.configure_authentication({
'method': 'oauth2',
'access_token': 'eyJhbGc...',
'context_name': 'API'
})
```
## 架构
**项目结构:**
**入口点:**
- app.py - Streamlit Web 界面(9 个标签页)
- cli.py - CI/CD CLI
- orchestrator.py - Legacy CLI
**modules/** - 核心功能
- **har_analyzer.py** - HAR 解析和情报分析
- **docker_manager.py** - ZAP 容器生命周期管理
- **zap_scanner.py** - 扫描编排
- **idor_detector.py** - IDOR 测试引擎(使用 ThreadPoolExecutor)
- **redteam_attacks.py** - 进攻性安全攻击
- UnauthenticatedReplayAttack
- MassAssignmentFuzzer
- HiddenParameterDiscovery
- RaceConditionTester
- **passive_analysis.py** - 非侵入式安全检查
- SecurityHeadersAnalyzer
- SensitiveDataScanner(10+ 正则模式)
- TokenEntropyAnalyzer(Shannon 熵)
- **redteam_ui_helpers.py** - Streamlit 结果渲染器
- **acceptance_engine.py** - 标准评估与 SARIF/JUnit 导出
- **reporter.py** - 多格式报告
- **openapi_importer.py** - OpenAPI/Swagger 解析器
- **advanced_zap_config.py** - 认证和上下文配置
## 技术实现
**并行化:**
- 使用 `ThreadPoolExecutor` 进行 Red Team 攻击(5-10 个 Workers)
- 通过 `aiohttp` 支持 Async/await,用于竞态条件测试
**检测算法:**
- 基于 Content-length 比率检测认证绕过(> 50% 阈值)
- 使用 Shannon 熵评估 Token 随机性
- 基于正则表达式的敏感数据模式匹配
- HTTP 状态码 + 响应大小启发式判断
**安全性:**
- 为测试禁用 TLS 验证(渗透测试场景)
- 请求经过脱敏处理(日志中不含凭证)
- ZAP 进程的 Docker 隔离
## 许可证
MIT
## 使用案例
1. **渗透测试**:自动化发现业务逻辑缺陷
2. **CI/CD 安全门禁**:发现严重问题时中断构建
3. **合规审计**:PCI-DSS(PII 泄露)、OWASP Top 10 覆盖
4. **安全回归测试**:对比不同版本的 HAR 文件
5. **Bug Bounty 搜寻**:系统化 Endpoint 枚举
## 局限性与手动测试建议
**自动化(本工具):**
- ✅ 未认证重放
- ✅ 批量赋值检测
- ✅ IDOR(需要 2 个会话)
- ✅ 安全 Header 验证
- ✅ 敏感数据泄露
**需要手动测试:**
- ⚠️ 复杂的业务逻辑(例如:负数定价)
- ⚠️ 多步骤工作流(结账流程篡改)
- ⚠️ 竞态条件(需要精确计时 + 突发测试)
- ⚠️ 加密弱点(算法分析)
## 贡献
欢迎提交 PR。重点关注领域:
- 基于机器学习的误报消除(sklearn 聚类)
- AsyncIO 竞态条件突发测试(50+ 并发请求)
- 更多认证方法(SAML, Kerberos)
- 分布式扫描(Celery/Redis 队列)
- 实时仪表盘(Grafana/Prometheus 集成)
- GraphQL/gRPC 支持
## 免责声明
**仅供授权安全测试使用。** 未经授权的渗透测试是非法的。在测试你不拥有的系统之前,请务必获得书面许可。
## 技术栈
[](https://skillicons.dev)
标签:API安全, CI/CD安全, CISA项目, DAST, DeepSeek, DevSecOps, Docker编排, HAR文件分析, IDOR检测, JSON输出, JWT认证, Kubernetes, Llama, LNA, Mass Assignment, OAuth2, OpenAPI, OWASP ZAP, Race Condition, Snort++, Web安全, 上游代理, 动态应用安全测试, 安全合规, 恶意软件分析, 熵值分析, 结构化查询, 网络代理, 网络安全审计, 自动化安全, 蓝队分析, 被动扫描, 请求拦截, 逆向工具