KauanCosta2000/Ultimate-ssrf-Framework

GitHub: KauanCosta2000/Ultimate-ssrf-Framework

一款强大的SSRF漏洞发现与分析框架。

Stars: 4 | Forks: 0

如果Sheep令牌被暴露,请立即更换它。 ## AI建议的安全检查 当启用AI时,框架可以要求选定的模型根据发现的端点和参数建议额外的安全检查。 AI不会执行任意命令或无限制的利用。它只返回结构化建议,并通过受控逻辑由框架验证。 支持的审查类别包括: ``` ssrf open_redirect cors_misconfig header_injection host_header_injection path_traversal_readonly lfi_readonly information_disclosure debug_endpoint exposed_config exposed_backup_file exposed_admin_panel idor_review authz_review mass_assignment_review api_versioning_issue graphql_introspection graphql_ssrf_review jwt_misconfig_review cache_poisoning_review request_smuggling_review webhook_ssrf_review file_upload_review redirect_uri_review oauth_misconfig_review cloud_metadata_review k8s_exposure_review service_mesh_exposure_review ``` 结果可能被分类为: ``` vulnerable suspected_other_issue manual_review not_confirmed error ``` AI建议的检查必须在报告之前手动验证。 ## MITRE ATT&CK映射 框架可以导出已确认或相关的MITRE ATT&CK映射。 使用以下命令启用: ``` --export-mitre ``` 生成的MITRE导出: ``` mitre_attack_.json remediation_.md ``` 示例映射技术包括: ``` T1190 Exploit Public-Facing Application T1595 Active Scanning T1046 Network Service Discovery T1552 Unsecured Credentials T1552.005 Cloud Instance Metadata API T1528 Steal Application Access Token T1613 Container and Resource Discovery T1059 Command and Scripting Interpreter ``` MITRE导出旨在用于安全验证和防御性报告。 可能包含Atomic Red Team参考,以提供防御性验证上下文,但框架不会自动执行Atomic Red Team测试。 ## 补救指南 报告包括针对常见SSRF相关风险的补救指南: ``` SSRF Cloud metadata exposure Credential disclosure Internal service discovery Kubernetes exposure Protocol abuse Header injection ``` 示例补救指南: * 使用严格的允许列表进行出站目标。 * 在请求执行之前对URL进行归一化和验证。 * 在DNS解析后阻止回环、链路本地、私有、多播和内部范围。 * 禁用不安全的协议,如`file://`、`gopher://`、`dict://`、`ftp://`和`ldap://`。 * 禁用重定向或重新验证每个重定向跳转。 * 在网络级别限制出站出口。 * 强制执行云元数据保护,如AWS IMDSv2。 * 立即更换暴露的秘密。 * 将秘密移动到受管理的秘密存储库。 ## 报告和导出 Ultimate SSRF框架支持多种输出格式。 生成的文件可能包括: ``` ssrf__.json ssrf_report__.html api_report_.json siem_.cef attack_map_.gexf mitre_attack_.json remediation_.md ai_payloads_.json ai_triage_.md nuclei_.yaml ``` ### HTML报告 HTML报告设计为安全团队使用的简单安全验证报告。 它包括: * 摘要 * 范围 * 发现 * 证据 * MITRE ATT&CK映射 * 补救 * 重测清单 * 尝试 * AI检查 HTML报告在顶部包含导航按钮,以便审阅者可以快速跳转到各个部分。 使用以下命令打开: ``` firefox reports/ssrf_report_*.html ``` ## 示例命令 ### 基本扫描 ``` python ssrf_arsenal.py \ --target example.com \ --callback your-callback.oastify.com \ --output reports-basic ``` ### 带导出的安全扫描 ``` python ssrf_arsenal.py \ --target example.com \ --callback your-callback.oastify.com \ --delay 2 \ --output reports-example \ --export-json-api \ --export-siem \ --attack-map \ --export-mitre ``` ### 直接URL模式 ``` python ssrf_arsenal.py \ --target example.com \ --url "https://example.com/fetch?url=PAYLOAD" \ --payload-file payloads.txt \ --callback your-callback.oastify.com \ --output reports-direct \ --export-json-api \ --export-siem \ --attack-map \ --export-mitre ``` ### TryHackMe风格的实验室 ``` python ssrf_arsenal.py \ --target hrms.thm \ --lab-profile thm-basic-ssrf \ --url "http://hrms.thm/?url=PAYLOAD" \ --payload-file payloads.txt \ --callback your-callback.oastify.com \ --delay 1 \ --output reports-hrms \ --no-ai \ --export-json-api \ --export-siem \ --attack-map \ --export-mitre ``` ### Sheep Hunter扫描 ``` python ssrf_arsenal.py \ --target example.com \ --callback your-callback.oastify.com \ --ai-provider sheep \ --ai-key "$SHEEP_TOKEN" \ --ai-model hunter \ --delay 2 \ --output reports-sheep-hunter \ --export-json-api \ --export-siem \ --attack-map \ --export-mitre ``` ### 目标文件扫描 ``` python ssrf_arsenal.py \ --target-file targets.txt \ --callback your-callback.oastify.com \ --delay 2 \ --output reports-targets \ --ai-provider sheep \ --ai-key "$SHEEP_TOKEN" \ --ai-model hunter \ --export-json-api \ --export-siem \ --attack-map \ --export-mitre ``` ## 目标文件 创建一个`targets.txt`文件: ``` example.com api.example.com https://app.example.com ``` 运行: ``` python ssrf_arsenal.py \ --target-file targets.txt \ --callback your-callback.oastify.com \ --output reports-target-file ``` 不要直接使用通配符模式,例如: ``` *.example.com ``` 首先解析或枚举真实主机,然后将真实主机名添加到目标文件中。 ## 模拟验证目标 您可以使用简单的模拟SSRF目标在本地验证框架。 创建`mock_ssrf_target.py`: ``` from http.server import BaseHTTPRequestHandler, HTTPServer from urllib.parse import urlparse, parse_qs class Handler(BaseHTTPRequestHandler): def do_GET(self): parsed = urlparse(self.path) qs = parse_qs(parsed.query) payload = qs.get("url", [""])[0] if parsed.path != "/fetch": self.send_response(404) self.end_headers() self.wfile.write(b"Not found") return if payload in ("localhost/config", "http://127.0.0.1/config", "http://localhost/config"): body = """""" self.send_response(200) self.send_header("Content-Type", "text/plain") self.end_headers() self.wfile.write(body.encode()) return if payload in ("localhost/copyright", "http://127.0.0.1/copyright"): self.send_response(200) self.send_header("Content-Type", "text/plain") self.end_headers() self.wfile.write(b"Copyright 2026 Mock HRMS") return if "169.254.169.254" in payload: self.send_response(403) self.send_header("Content-Type", "text/plain") self.end_headers() self.wfile.write(b"Blocked metadata access") return self.send_response(400) self.send_header("Content-Type", "text/plain") self.end_headers() self.wfile.write(f"Invalid or unsupported url parameter: {payload}".encode()) HTTPServer(("127.0.0.1", 8088), Handler).serve_forever() ``` 运行模拟目标: ``` python mock_ssrf_target.py ``` 然后测试框架: ``` python ssrf_arsenal.py \ --target 127.0.0.1:8088 \ --url "http://127.0.0.1:8088/fetch?url=PAYLOAD" \ --payload-file payloads.txt \ --callback example.oast.fun \ --delay 1 \ --output reports-mock-validation \ --no-ai \ --export-json-api \ --export-siem \ --attack-map \ --export-mitre \ --no-update-check ``` ## 安装 克隆存储库: ``` git clone https://github.com/KauanCosta2000/Ultimate-ssrf-Framework.git cd Ultimate-ssrf-Framework ``` 创建虚拟环境: ``` python3 -m venv .venv source .venv/bin/activate ``` 安装依赖项: ``` python -m pip install --upgrade pip pip install -r requirements.txt python -m playwright install chromium ``` 运行帮助: ``` python ssrf_arsenal.py --help ``` ## Windows PowerShell安装 ``` git clone https://github.com/KauanCosta2000/Ultimate-ssrf-Framework.git cd Ultimate-ssrf-Framework python -m venv .venv .\.venv\Scripts\Activate.ps1 python -m pip install --upgrade pip pip install -r requirements.txt python -m playwright install chromium python ssrf_arsenal.py --help ``` ## 要求 预期依赖项: ``` playwright>=1.40.0 aiohttp>=3.9.0 jinja2>=3.1.0 httpx>=0.27.0 aiohttp_socks>=0.10.1 PyYAML>=6.0.0 networkx>=3.0 pytest>=8.0.0 ``` ## CLI参考 ``` --target Single target --targets Comma-separated target list --target-file File containing targets, one per line --param Specific parameter to test --path Specific path to test. Can be used multiple times --url Exact URL template. Use PAYLOAD as placeholder --payload Custom payload. Can be used multiple times --payload-file File containing payloads, one per line --callback Callback/OAST domain --scheme Target scheme when target has no http:// or https:// --lab-profile Lab profile: generic, thm, thm-basic-ssrf --body-snippet-size Max response snippet stored per attempt --delay Delay between requests --quiet Reduce output --visible Run browser visibly --proxy Proxy server --proxy-file Proxy list --proxy-type Proxy type: http or socks5 --ai-provider AI provider --ai-key AI API key --ai-model AI model --no-ai Disable AI --dangerous-payloads Enable dangerous payloads. Disabled by default --export-json-api Export API-style JSON report --export-siem Export CEF/SIEM report --attack-map Export GEXF attack map --export-mitre Export MITRE ATT&CK and remediation reports --export-nuclei Export Nuclei template for confirmed OOB SSRF --update Pull latest changes from Git --auto-update Automatically update before running --no-update-check Skip startup update prompt --no-update-deps Do not reinstall requirements after update --update-branch Branch to update from. Default: main --cancel-key Key used to safely cancel scan --no-cancel-hotkey Disable safe cancel hotkey ``` ## 危险有效载荷 默认情况下禁用危险有效载荷。 除非环境完全受控且明确授权,否则不要启用它们。 ``` --dangerous-payloads ``` 这可能包括协议级别的侵略性有效载荷。除非程序明确允许,否则在正常的漏洞赏金测试中不要使用此选项。 ## 推荐的工作流程 1. 确认目标在范围内。 2. 仅使用安全有效载荷。 3. 使用回调/OAST域名。 4. 对于漏洞赏金目标,使用`--delay 2`或更高。 5. 当您已经知道有漏洞的参数时,使用直接URL模式。 6. 审查HTML报告。 7. 手动验证证据。 8. 在提交之前删除无关的`not_confirmed`尝试。 9. 仅提交已确认的影响。 10. 永远不要在没有手动验证的情况下将AI输出作为证据报告。 ## 示例漏洞赏金工作流程 ``` python ssrf_arsenal.py \ --target url-checker.example.com \ --url "https://url-checker.example.com/fetch?url=PAYLOAD" \ --payload-file payloads.txt \ --callback your-callback.oastify.com \ --delay 2 \ --output reports-url-checker \ --ai-provider sheep \ --ai-key "$SHEEP_TOKEN" \ --ai-model hunter \ --export-json-api \ --export-siem \ --attack-map \ --export-mitre ``` 审查: ``` find reports-url-checker -type f grep -RniE "vulnerable|critical|high|callback|metadata|169.254|remediation|MITRE" reports-url-checker/ firefox reports-url-checker/ssrf_report_*.html ``` ## 输出含义 ``` vulnerable ``` 找到了已确认的证据。 ``` not_confirmed ``` 已测试有效载荷,但没有找到已确认的证据。 ``` error ``` 请求失败、超时或遇到运行时/网络问题。 ``` manual_review ``` 结果需要人工验证。 ``` suspected_other_issue ``` 可能存在非SSRF问题,但需要手动验证。 ## 假阴性注释 `not_confirmed`并不意味着目标安全。 它仅意味着框架没有确认该特定端点、参数和有效载荷的证据。 仍需要进行手动验证。 ## 许可证 由**belladonnask**许可。 负责任地使用。
标签:AI 辅助安全, API 安全, CISA项目, Cloudflare, CORS 配置错误, GraphQL 安全, JWT 配置错误, Kubernetes 暴露, Maven, MITRE ATT&CK, OAuth 配置错误, SSRF 漏洞, StruQ, Webhook 安全, Web截图, 主机头注入, 云元数据, 令牌管理, 信息泄露, 备份文件管理, 头部注入, 威胁狩猎, 安全合规, 安全审查, 安全测试, 安全漏洞分类, 安全规则引擎, 安全配置, 容器安全, 密码管理, 开放重定向, 恶意代码分类, 手动审查, 插件系统, 攻击性安全, 文件上传安全, 服务网格安全, 服务网格暴露, 本地文件包含, 漏洞修复, 漏洞分析, 漏洞报告, 漏洞验证, 特征检测, 管理员面板安全, 缓存投毒, 网络代理, 网络安全培训, 请求走私, 调试接口, 跨站请求伪造, 路径探测, 路径遍历, 身份验证安全, 运行时操纵, 逆向工具, 重定向 URI 安全, 错误处理