0x01 工具介绍
Autoswagger 是一款面向 API 安全测试的命令行工具,专注于从 Swagger/OpenAPI 文档中自动发现并检测未授权的端点。它可快速解析 API 规范,执行并发测试,识别 PII(个人可识别信息)、敏感密钥及大规模响应。借助 Presidio 与正则匹配,Autoswagger 能有效定位潜在的数据泄露风险,帮助安全人员、开发者和测试工程师在早期发现并修复安全问题,提升系统的整体防护能力。
注意:现在只对常读和星标的公众号才展示大图推送,建议大家把渗透安全HackTwo"设为星标⭐️"否则可能就看不到了啦!
下载地址在末尾#渗透安全HackTwo
0x02 功能简介
🔥 核心功能亮点
多个发现阶段
通过三种方式发现 OpenAPI 规范:
直接规范.json:如果提供了以、.yaml或结尾的路径的完整 URL .yml,则直接解析该文件。
Swagger UI:解析 Swagger UI 的已知路径(例如/swagger-ui.html),并从 HTML 或 JavaScript 中提取规范。
直接使用暴力破解规范:尝试使用常见的 OpenAPI 模式位置(/swagger.json例如/openapi.json、 等)进行发现。仅当 1. 和 2. 均未得到结果时才尝试此方法。
并行端点测试
对多个端点进行多线程并发测试,遵守可配置的速率限制(-rate)。
参数值的暴力破解
如果使用-b或--brute,请尝试使用带有一些示例值的各种数据类型来尝试绕过特定于参数的验证。
Presidio PII 检测:
检查输出中的电话号码、电子邮件、地址和姓名(通过上下文验证以减少误报)。还可解析 CSV 行和简单的“键:值”行。
秘密检测
利用一组正则表达式模式来检测令牌、密钥和调试工件(如环境变量)。
命令行或 JSON 输出
在默认模式下,结果以表格形式显示。使用-json,输出 JSON 结构。-product模式会过滤输出,仅显示包含 PII、机密或大型响应的内容。
0x03更新说明
新增功能、优化、修复的 bug
0x04 使用介绍
📦安装与使用
🚀 快速开始
cd autoswagger安装依赖:pip install -r requirements.txt建议为此使用虚拟环境python3 -m venv venv;source venv/bin/activate
检查安装,显示帮助:
python3 autoswagger.py -h可选参数:[td]参数 | 描述 | urls | 基本 URL 或直接规范 URL 的列表。 | -v, --verbose | 启用详细日志记录。在 下创建日志文件~/.autoswagger/logs。 | -risk | 在测试中包括非 GET 方法(POST、PUT、PATCH、DELETE)。 | -all | 输出中包含 200 和 404 端点(不包括 401/403)。 | -product | 仅以 JSON 格式输出具有 PII 或大型响应的端点。 | -stats | 显示扫描统计信息(例如请求、RPS、带有 PII 的主机)。 | -rate <N> | 将请求数限制为每秒 N 个请求。默认值为 30。使用 0 可禁用速率限制。 | -b, --brute | 启用参数值的暴力破解(多个测试组合)。 | -json | 在默认模式下,以 JSON 格式输出结果,而不是 Rich 表。 | 帮助
[AppleScript] 纯文本查看 复制代码 / | __ __/ /_____ ______ ______ _____ _____ ____ _____
/ /| |/ / / / __/ __ \/ ___/ | /| / / __ `/ __ `/ __ `/ _ \/ ___/
/ ___ / /_/ / /_/ /_/ (__ )| |/ |/ / /_/ / /_/ / /_/ / __/ /
/_/ |_\__,_/\__/\____/____/ |__/|__/_\__,_/\__, /\__, /\___/_/
/____//____/
[url]https://intruder.io[/url]
Find unauthenticated endpoints
usage: autoswagger.py [-h] [-v] [-risk] [-all] [-product] [-stats] [-rate RATE] [-b] [-json] [urls ...]
Autoswagger: Detect unauthenticated access control issues via Swagger/OpenAPI documentation.
positional arguments:
urls Base URL(s) or spec URL(s) of the target API(s)
options:
-h, --help show this help message and exit
-v, --verbose Enable verbose output
-risk Include non-GET requests in testing
-all Include all HTTP status codes in the results, excluding 401 and 403
-product Output all endpoints in JSON, flagging those that contain PII or have large responses.
-stats Display scan statistics. Included in JSON if -product or -json is used.
-rate RATE Set the rate limit in requests per second (default: 30). Use 0 to disable rate limiting.
-b, --brute Enable exhaustive testing of parameter values.
-json Output results in JSON format in default mode.
Example usage:
python autoswagger.py [url]https://api.example.com[/url] -v
直接规范
如果提供的 URL 以 结尾.json/.yaml/.yml,Autoswagger将直接尝试解析 OpenAPI 模式。
Swagger-UI 检测
- 尝试已知的 UI 路径(例如/swagger-ui.html)。
- 如果找到,则解析 HTML 或本地 JavaScript 文件中的 aswagger.json或openapi.json。
- 可以检测嵌入式配置,例如window.swashbuckleConfig。
Bruteforce 的 Direct Spec
- 如果到目前为止没有找到任何规范,Autoswagger 会尝试列出默认端点/swagger.json,如/openapi.json、等。
- 当发现有效规范或未找到有效规范时停止。
端点测试
收集端点
加载规范后,Autoswagger 会提取paths键下的每个路径和方法。
HTTP 方法
- 默认情况下,GET仅测试。
- 用于-risk包括其他方法(POST,PUT,PATCH,DELETE)。
参数值
- 使用默认值或要枚举的值填充路径/查询参数。
- 可选择根据规范requestBody(OpenAPI 3)或主体参数(Swagger 2)构建请求主体。
速率限制和并发
- 支持对每秒请求数设置上限的线程(-rate)。
- 每个端点都通过专门的工作进行测试。
响应分析
- 解码响应,检查 PII、秘密和大量内容。
- 记录相关发现。
PII 检测
基于 Presidio 的分析
- 搜索电话号码、电子邮件、地址、姓名。
- 基于上下文的扫描(例如,CSV 标头、键值行)。
机密和调试信息
- 类似 TruffleHog 的正则表达式检查 API 密钥、令牌、环境变量。
- 将任何匹配项合并到 PII 数据结构中以供最终报告。
大型响应检查
- 将具有 100 多个 JSON 元素或大型 XML 结构的响应标记为“有趣”。
- 还检查原始大小阈值(例如,>100k 字节)。
|