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 支持 ## 免责声明 **仅供授权安全测试使用。** 未经授权的渗透测试是非法的。在测试你不拥有的系统之前,请务必获得书面许可。 ## 技术栈 [![Stack](https://skillicons.dev/icons?i=py,sklearn,redis,docker,grafana,prometheus&theme=dark)](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安全, 上游代理, 动态应用安全测试, 安全合规, 恶意软件分析, 熵值分析, 结构化查询, 网络代理, 网络安全审计, 自动化安全, 蓝队分析, 被动扫描, 请求拦截, 逆向工具