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

用于跨Web域和子域有效扫描暴露的Swagger端点的工具

APIDetector是一款测试各个子域中公开暴露的Swagger端点,并有效降低检测误报。

  • 灵活输入:接受文件中的单个域名或多个子域名列表
  • 多种协议:覆盖HTTP和HTTPS测试选项
  • 并发:利用多线程来加快扫描速度
  • 可定制的输出:将结果保存到文件或打印到标准输出
  • 详细和安静模式:支持详细日志记录结果(默认详细模式),以及安静模式选项
  • 自定义UA头:支持自定义UA头
  • 智能误报检测:能够检测大多数误报

在运行 APIDetector 之前,请确保您的系统上安装了Python 3.x和pip。您可以在此处下载Python.

使用以下命令将APIDetector克隆到本地:

bash

git clone https://github.com/brinhosa/apidetector.git
cd apidetector
pip install requests 

or

bash

git clone https://gitee.com/secrole/apidetector
cd apidetector
pip install requests

usage

使用命令行运行 APIDetector。以下是一些使用示例:

  • 常见用法,使用Chrome用户代理以30个线程扫描子域列表并将结果保存在文件中:

    bash

    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"
  • 扫描单域名:

    bash

    python apidetector.py -d example.com
  • 扫描单文件多域名:

    bash

    python apidetector.py -i input_file.txt
  • 指定输出:

    bash

    python apidetector.py -i input_file.txt -o output_file.txt
  • 使用特定数量的线程:

    bash

    python apidetector.py -i input_file.txt -t 20
  • 使用HTTP和HTTPS协议扫描:

    bash

    python apidetector.py -m -d example.com
  • 在安静模式下运行脚本(抑制详细的输出):

    bash

    python apidetector.py -q -d example.com
  • 使用自定义用户代理运行脚本:

    bash

    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: 自定义请求用户代理字符串.

暴露 Swagger 或 OpenAPI 文档端点可能会带来各种风险,主要与信息泄露有关。以下是基于潜在风险级别的有序列表,其中相似的端点分组在一起 APIDetector 扫描:

  • 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 结构和潜在的攻击向量
  • 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 的大量信息
  • 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 的功能和潜在的弱点。
    • 风险级别:中。这些可能不像完整的文档或架构文件那么详细,但它们仍然为攻击者提供有用的信息.
  • Endpoints:
    • '/swagger-resources', '/swagger-resources/configuration/ui', '/swagger-resources/configuration/security', '/api/swagger-resources', '/api.html'
  • Risk:
    • 这些端点通常提供与 API 文档设置相关的辅助信息、配置详细信息或资源。
    • 风险级别:较低。它们可能不会直接透露 API 端点详细信息,但可以深入了解 API 文档的配置和设置.
  • 高风险:直接暴露交互式API文档接口.
  • 中高风险:暴露原始 API 架构/规范文件.
  • 中风险:特定于版本的 API 文档.
  • 低风险:API 文档的配置和资源文件.
  • 访问控制:确保这些端点不可公开访问或至少受到身份验证机制的保护.
  • 特定于环境的公开:考虑仅在开发或登台环境中公开详细的 API 文档,而不是在生产中.
  • 监控和日志记录:监控对这些端点的访问,并针对异常访问模式设置警报.

APIDetector 的使用应仅限于测试和教育目的。 APIDetector 的开发人员不承担任何责任,也不对该工具造成的任何误用或损坏负责。

在使用 APIDetector 之前,请确保您有权测试要扫描的网络或系统。

相关内容