Swagger泄露利用
在实战中,也是经常遇见这种 Swagger 泄露出来的
这里记录一下初步思路
简单了解一下
API Documentation & Design Tools for Teams | Swagger
Swagger 是一套开源工具和规范,用于设计、构建、记录和测试 RESTful API。它的目标是让 API 的文档编写与实现过程自动化、标准化。
Swagger UI
是 Swagger 工具中最常用、最直观的组件。
- 一个自动生成的、交互式 API 文档网页。
- 我们可以在网页上直接****查看接口定义、测试 API 调用(支持填写参数、发送请求)。
- 一般路径是:
http://<ip>:<port>/swagger-ui.html
或
http://<ip>:<port>/swagger/index.html
主要路径如下
/v1/api-docs
/api
/api-docs
/api-docs/swagger.json
/api.html
/api/api-docs
/api/apidocs
/api/doc
/api/swagger
/api/swagger-ui
/api/swagger-ui.html
/api/swagger-ui.html/
/api/swagger-ui.json
/api/swagger.json
/api/swagger/
/api/swagger/ui
/api/swagger/ui/
/api/swaggerui
/api/swaggerui/
/api/v1/
/api/v1/api-docs
/api/v1/apidocs
/api/v1/swagger
/api/v1/swagger-ui
/api/v1/swagger-ui.html
/api/v1/swagger-ui.json
/api/v1/swagger.json
/api/v1/swagger/
/api/v2
/api/v2/api-docs
/api/v2/apidocs
/api/v2/swagger
/api/v2/swagger-ui
/api/v2/swagger-ui.html
/api/v2/swagger-ui.json
/api/v2/swagger.json
/api/v2/swagger/
/api/v3
/apidocs
/apidocs/swagger.json
/doc.html
/docs/
/druid/index.html
/graphql
/libs/swaggerui
/libs/swaggerui/
/spring-security-oauth-resource/swagger-ui.html
/spring-security-rest/api/swagger-ui.html
/sw/swagger-ui.html
/swagger
/swagger-resources
/swagger-resources/configuration/security
/swagger-resources/configuration/security/
/swagger-resources/configuration/ui
/swagger-resources/configuration/ui/
/swagger-ui
/swagger-ui.html
/swagger-ui.html#/api-memory-controller
/swagger-ui.html/
/swagger-ui.json
/swagger-ui/swagger.json
/swagger.json
/swagger.yml
/swagger/
/swagger/index.html
/swagger/static/index.html
/swagger/swagger-ui.html
/swagger/ui/
/Swagger/ui/index
/swagger/ui/index
/swagger/v1/swagger.json
/swagger/v2/swagger.json
/template/swagger-ui.html
/user/swagger-ui.html
/user/swagger-ui.html/
/v1.x/swagger-ui.html
/v1/api-docs
/v1/swagger.json
/v2/api-docs
/v3/api-docs
挖掘思路
Swagger-UI
如下
利用 fofa 等引擎中可以找到相应的服务,具体查询语句如下
title="Swagger UI" || body="swagger-ui"
(title="Swagger UI" || body="swagger-ui") && country="CN" && region="上海"
我们发现的 Swagger-ui
可以进行一些接口操作,如下可以进行登录操作,如果 Swagger 没有强制认证的话,我们可以直接在 UI 界面手动去发一些包
一般就是去找未授权,看看有没有返回一些敏感信息
swagger.json
有时候发现其实没有 Swagger-ui
,只有一个 json
文件
**不管有没有,我们都可以可以导入 **apifox
或者 postman
,这样审接口什么,看参数什么的方便一点
可以发现把相应接口整合管理
效果如下,
与之对应,json 原格式如下
工具---swagger-hack
自动化去带相应参数发包
python .\swagger-hack2.0.py -u "...."
会输出生成一个 csv 文件,可以查看每次请求回显内容,
最主要的就是要利用这种接口文档
去挖掘未授权操作
或者说去找到存在的敏感信息
代理结合 xray 扫描
这个是由于当时查资料的时候
看到一个经验贴
复现一下整体思路
:::info 这里采用
Yakit 结合 Apifox
bp 什么的都一样,多配一步,把流量转发给 xray 扫描就行
:::
先是在 Apifox 设置自定义代理,跟抓包代理端口一样就行
可以发个快捷包测试一下
成功接收
启动 Xray,这里监听 7777 端口
xray.exe webscan --listen 127.0.0.1:7777 --html-output zbb.html
**这里是将结果保存在 **zbb.html
中了
Yakit 中设置一个下游代理
把 Apifox 的流量转发到 Xray,让他进行被动扫描
这里可以测试一下是否流量通了
还是一样快捷请求发个包
OK了
然后跑 runner,
自动化测试
这种配置完成之后的话,就是利用 postman 和 apifox 的自动化测试,结合 xray 扫描跑一跑,看看有什么可以利用或者敏感信息泄露的
这种方法感觉还是比较全面的
防御措施
就是禁止将 Swagger 这种服务暴露在公网上
措施 | 说明 |
---|---|
关闭生产环境中的 Swagger | 在生产环境禁用 Swagger UI 或 API 文档服务。 |
设置身份认证访问 | 使用 JWT、Basic Auth、IP 白名单等限制访问 Swagger 页面。 |
仅允许内网访问 | Swagger UI 页面通过防火墙或反向代理限制,只能从内网或特定 IP 访问。 |