摘要: APIDetector是一个强大而高效的工具,旨在测试各种子域中暴露的Swagger端点,具有独特的智能功能来检测误报。它对于从事API测试和漏洞扫描的安全专业人员和开发人员特别有用。 APIDetector特征灵活的输入:接受一个单一的域名或一个列表的子...
APIDetector是一个强大而高效的工具,旨在测试各种子域中暴露的Swagger端点,具有独特的智能功能来检测误报。它对于从事API测试和漏洞扫描的安全专业人员和开发人员特别有用。
APIDetector特征
- 灵活的输入:接受一个单一的域名或一个列表的子域从一个文件。
- 多协议:通过HTTP和HTTPS测试端点的选项。
- 并发性:利用多线程加快扫描速度。
- 可自定义输出:保存结果到文件或打印到标准输出。
- 详细和安静模式:详细日志的默认详细模式,带有安静模式选项。
- 自定义用户代理:能够为请求指定自定义用户代理。
- Smart Detection of False-Positives:能够检测大多数误报。
APIDetector入门
先决条件
在运行APIDetector之前,请确保您的系统上安装了Python 3.x和pip。你可以在这里下载Python。
安装
使用以下命令将APIDetector存储库克隆到本地计算机:
git clone https://github.com/brinhosa/apidetector.git
cd apidetector
pip install requests
使用
使用命令行运行APIDetector。以下是一些用法示例:
常见用法,使用Chrome用户代理使用30个线程扫描子域列表,并将结果保存在文件中:
python apidetector.py -i list_of_company_subdomains.txt -o results_file.txt -t 30 -ua "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"
扫描单个域:
python apidetector.py -d example.com
要从文件扫描多个域,请执行以下操作:
python apidetector.py -i input_file.txt
要指定输出文件,请执行以下操作:
python apidetector.py -i input_file.txt -o output_file.txt
要使用特定数量的线程,请执行以下操作:
python apidetector.py -i input_file.txt -t 20
要同时使用HTTP和HTTPS协议进行扫描,请执行以下操作:
python apidetector.py -m -d example.com
要在安静模式下运行脚本(禁止详细输出),请执行以下操作:
python apidetector.py -q -d example.com
要使用自定义用户代理运行脚本,请执行以下操作:
python apidetector.py -d example.com -ua "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"
选项
- -d,--domain:要测试的单个域。
- -i,--input:包含要测试的子域的输入文件。
- -o,--output:要写入有效URL的输出文件。
- -t、--threads:用于扫描的线程数(默认值为10)。
- -m,--mixed-mode:测试HTTP和HTTPS协议。
- -q,--quiet:禁用详细输出(默认模式为详细)。
- -ua,--user-agent:请求的自定义User-Agent字符串。
APIDETECTOR发现的每个终点的风险等级
暴露Swagger或OpenAPI文档端点可能会带来各种风险,主要与信息泄露有关。以下是基于潜在风险级别的有序列表,其中类似的端点分组在一起APIDetector扫描:
1.高风险终点(直接API文件):
端点:
'/swagger-ui.html'、'/swagger-ui/'、'/swagger-ui/index.html'、'/api/swagger-ui.html'、'/documentation/swagger-ui.html'、'/swagger/index.html'、'/api/docs'、'/docs'、'/api/swagger-ui'、'/documentation/swagger-ui'
风险:
这些端点通常服务于Swagger UI界面,该界面提供所有API端点的完整概述,包括请求格式、查询参数,有时甚至是示例请求和响应。
风险等级:高。暴露这些信息可以让潜在攻击者详细了解您的API结构和潜在攻击媒介。
2.中-高风险终点(API方案/质量标准):
端点:
'/openapi.json'、'/swagger.json'、'/api/swagger.json'、'/swagger.yaml'、'/swagger.yml'、'/api/swagger.yaml'、'/api/swagger.yml'、'/api.json'、'/api.yaml'、'/api.yml'、'/documentation/swagger.json'、'/documentation/swagger.yaml'、'/documentation/swagger.yml'
风险:
这些端点提供原始的Swagger/OpenAPI规范文件。它们包含有关API端点的详细信息,包括路径、参数,有时还包括身份验证方法。
风险等级:中-高。虽然它们比UI接口需要更多的解释,但它们仍然揭示了有关API的大量信息。
3.中等风险终点(API文件版本):
端点:
'/v2/api-docs'、'/v3/api-docs'、'/api/v2/swagger.json'、'/api/v3/swagger.json'、'/api/v1/documentation'、'/api/v2/documentation'、'/api/v3/documentation'、'/api/v1/api-docs'、'/api/v2/api-docs'、'/api/v3/api-docs'、'/swagger/v2/api-docs'、'/swagger/v3/api-docs'、'/swagger-ui.html/v2/api-docs'、'/swagger-ui.html/v3/api-docs'、'/api/swagger/v2/api-docs'、'/api/swagger/v3/api-docs'
风险:
这些端点通常引用特定于版本的文档或API描述。它们揭示了有关API的结构和功能的信息,这可以帮助攻击者了解API的功能和潜在的弱点。
风险等级:中等。这些可能不像完整的文档或模式文件那样详细,但它们仍然为攻击者提供了有用的信息。
4.较低风险终点(配置和资源):
端点:
'/swagger-resources'、'/swagger-resources/configuration/ui'、'/swagger-resources/configuration/security'、'/api/swagger-resources'、'/api.html'
风险:
这些端点通常提供与API文档设置相关的辅助信息、配置详细信息或资源。
风险等级:较低。它们可能不会直接显示API端点详细信息,但可以给予了解API文档的配置和设置。
总结:
- 最高风险:直接暴露交互式API文档接口。
- 中-高风险:暴露原始API架构/规范文件。
- 中等风险:特定于版本的API文档。
- 较低风险:API文档的配置和资源文件。
建议:
- 访问控制:确保这些端点不可公开访问,或者至少受到身份验证机制的保护。
- 特定于环境的公开:考虑仅在开发或试运行环境中公开详细的API文档,而不在生产环境中公开。
- 监控和日志记录:监控对这些端点的访问,并为异常访问模式设置警报。