白帽故事 · 2023年8月13日 0

没有SwaggerUI的Swag怎么破?

背景介绍:

API 配置错误是指应用程序编程接口 (API) 的设置不当或不安全,这可能包括弱身份验证、缺乏输入验证或不正确的访问控制等问题。

API 配置错误可能使攻击者能够未经授权访问敏感数据或代表用户执行操作,这可能导致敏感数据泄露、系统受损和其它安全问题。

切入正题:

在对某个私邀项目测试时,通过访问其 Web 页面的 SwaggerUI ,发现给出一个错误提示,“Unauthorized, Full authentication is required to access”,但 WWW-Authenticate 标头在响应中的起始值 Bearer 却引起了我的特别注意。

file

于是我开始挖掘token,但没有找到任何token,于是我开始在 cookie、localstorage 和 sessionstorage 中寻找token,并发现授权token存储在应用程序localstorage中,于是复制该token并在请求中使用,然后将 {serviceIdentifier} 更改为 1 ,我便能够枚举包含员工详细信息的用户列表,如姓名、员工 ID、电子邮件、部门名称以及电话号码。

什么是SwaggerUI?

Swagger UI 是一个用户友好的界面,用于显示和测试使用 OpenAPI 规范定义的 RESTful API 的端点,它允许开发人员轻松地与 API 交互,并以简单、直观的格式查看各种请求和响应。

我是如何发现该漏洞的?

1、访问SwaggerUI,并拦截该请求,然后将该请求发送至repeater

2、通过在页面中点击右键,选择Inspect > Storage > LocalStorage,在LocalStorage中搜索授权Token

file

file

3、从LocalStorage中复制授权Token,并将其保存在文件中以便后续使用

4、在请求中添加 Authorization 标头,初始值为 Bearer,后面跟上授权Token

file

5、点击发送,获得用户详细信息

file

6、修改{serviceIdentifier},实现用户信息遍历

file

什么原因导致的?

应该是以下两个原因导致了该漏洞:

1、可被访问的 SwaggerUI 端点

2、过于宽松的授权Token

漏洞危害:

任何用户都可以轻松访问本该被限制访问的所有用户信息

CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:N/A:L

Score – 7.2 High

缓解措施:

1、限制 SwaggerUI 的访问

2、为生成的授权 Token 授予适当的权限

你学会了吗?