网络安全和数据安全:资讯、技术、法规、趋势。

忘记密码
“游侠安全网”创建了网络安全从业者QQ大群(群号:389710688) ,欢迎各位同仁加入!有其它问题,请联系站长“网路游侠”,QQ:55984512


APIDetector - API漏洞扫描器

2024-03-29 00:11 推荐: 浏览: 29 字号:

摘要: 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文档,而不在生产环境中公开。
  • 监控和日志记录:监控对这些端点的访问,并为异常访问模式设置警报。
联系站长租广告位!

中国首席信息安全官
Copy link