[开源工具] - 用于跨Web域和子域有效扫描暴露的Swagger端点的工具

系列 - Information Security
目录
1 【🔔】互联网工具,安全性未知,需要自行研判安全性。
用于跨Web域和子域有效扫描暴露的Swagger端点的工具
2 APIDetector
APIDetector是一款测试各个子域中公开暴露的Swagger端点,并有效降低检测误报。
2.1 Features
- 灵活输入:接受文件中的单个域名或多个子域名列表
- 多种协议:覆盖HTTP和HTTPS测试选项
- 并发:利用多线程来加快扫描速度
- 可定制的输出:将结果保存到文件或打印到标准输出
- 详细和安静模式:支持详细日志记录结果(默认详细模式),以及安静模式选项
- 自定义UA头:支持自定义UA头
- 智能误报检测:能够检测大多数误报
2.2 Getting Started
2.2.1 Prerequisites
在运行 APIDetector 之前,请确保您的系统上安装了Python 3.x和pip。您可以在此处下载Python.
2.2.2 Installation
使用以下命令将APIDetector克隆到本地:
git clone https://github.com/brinhosa/apidetector.git
cd apidetector
pip install requests
or
git clone https://gitee.com/secrole/apidetector
cd apidetector
pip install requests
2.2.3 Usage
使用命令行运行 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"
2.2.4 Options
-d
,--domain
: 单个域进行测试。-i
,--input
: 输入文件包含子域进行测试.-o
,--output
: 输出文件以将有效的URL写入.-t
,--threads
: 用于扫描的线程数(默认为10).-m
,--mixed-mode
: 测试HTTP和HTTPS协议.-q
,--quiet
: 禁用详细输出(默认模式为详细).-ua
,--user-agent
: 自定义请求用户代理字符串.
2.3 端点的风险详细信息
暴露 Swagger 或 OpenAPI 文档端点可能会带来各种风险,主要与信息泄露有关。以下是基于潜在风险级别的有序列表,其中相似的端点分组在一起 APIDetector 扫描:
2.3.1 1. 高风险Endpoints (API文档):
- Endpoints:
'/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'
- Risk:
- 这些端点通常服务于 Swagger UI 界面,该界面提供所有 API 端点的完整概述,包括请求格式、查询参数,有时甚至是示例请求和响应
- Risk Level: 风险级别:高。暴露这些可以让潜在的攻击者详细了解您的 API 结构和潜在的攻击向量
2.3.2 2. 中高风险Endpoints(API 架构/规范):
- Endpoints:
'/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'
- Risk:
- 这些端点提供原始 Swagger/OpenAPI 规范文件。它们包含有关 API 端点的详细信息,包括路径、参数,有时还包括身份验证方法
- 风险级别:中高。虽然它们比 UI 界面需要更多的解释,但它们仍然揭示了有关 API 的大量信息
2.3.3 3. 中风险Endpoints (API文档版本):
- Endpoints:
'/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'
- Risk:
- 这些端点通常引用特定于版本的文档或 API 描述。它们揭示了有关 API 结构和功能的信息,这可以帮助攻击者了解 API 的功能和潜在的弱点。
- 风险级别:中。这些可能不像完整的文档或架构文件那么详细,但它们仍然为攻击者提供有用的信息.
2.3.4 4. 低风险endpoints(配置和资源)
- Endpoints:
'/swagger-resources'
,'/swagger-resources/configuration/ui'
,'/swagger-resources/configuration/security'
,'/api/swagger-resources'
,'/api.html'
- Risk:
- 这些端点通常提供与 API 文档设置相关的辅助信息、配置详细信息或资源。
- 风险级别:较低。它们可能不会直接透露 API 端点详细信息,但可以深入了解 API 文档的配置和设置.
2.4 总结
- 高风险:直接暴露交互式API文档接口.
- 中高风险:暴露原始 API 架构/规范文件.
- 中风险:特定于版本的 API 文档.
- 低风险:API 文档的配置和资源文件.
2.5 建议
- 访问控制:确保这些端点不可公开访问或至少受到身份验证机制的保护.
- 特定于环境的公开:考虑仅在开发或登台环境中公开详细的 API 文档,而不是在生产中.
- 监控和日志记录:监控对这些端点的访问,并针对异常访问模式设置警报.
3 免责声明
APIDetector 的使用应仅限于测试和教育目的。 APIDetector 的开发人员不承担任何责任,也不对该工具造成的任何误用或损坏负责。
在使用 APIDetector 之前,请确保您有权测试要扫描的网络或系统。
3.1 工具下载
相关内容

如果你觉得这篇文章对你有所帮助,欢迎赞赏~
