api漏洞系列-OAuth中的一个问题小结

简介: 漏洞描述OAuth2 API允许用户将访问他们账户的权限授予第三方应用程序。当然,用户能够管理此类应用程序对其帐户的访问,并可能拒绝任何应用程序的访问。当某些用户拒绝对应用程序的访问时,所有的access_token(以及使用的refresh_token)都将被撤销并变得无效。但是不仅access_tokens应该被撤销,授权码(它是OAuth2授权流中使用的中间令牌)也必须被撤销。目前大多数OAuth2 API实现在撤销访问时不撤销授权代码。它可能被恶意应用程序利用去恢复访问用户帐户后,即使权限被撤销。

漏洞描述


OAuth2 API允许用户将访问他们账户的权限授予第三方应用程序。当然,用户能够管理此类应用程序对其帐户的访问,并可能拒绝任何应用程序的访问。当某些用户拒绝对应用程序的访问时,所有的access_token(以及使用的refresh_token)都将被撤销并变得无效。但是不仅access_tokens应该被撤销,授权码(它是OAuth2授权流中使用的中间令牌)也必须被撤销。目前大多数OAuth2 API实现在撤销访问时不撤销授权代码。它可能被恶意应用程序利用去恢复访问用户帐户后,即使权限被撤销。

目前的统计数据 :

1.共测试了21家OAuth2提供商,其中:

2.11家权限撤销后 授权代码缺失 依然有效  

3.10家  用户和应用程序授予的所有授权码 是失效 的

一句话小结: 11家有问题,10家没问题;


POC

1)打开某个应用的OAuth2授权链接

2)登录您的账户(如果需要),点击允许(或授权)

3)从回调url复制代码值

4)使用代码值获取access_token

5)通过发送一些API请求来检查access_token的有效性

6)重复步骤1和2(对于大多数实现,用户自动重定向到回调页面,如果访问授权)

7)从回调url中复制代码值并保存以备以后使用

8)进入帐户安全(或连接的应用程序)设置

9)删除或断开PoC期间使用的应用程序

10)为了确保访问被拒绝,重复步骤5

11)使用从步骤7获取的code和并替换它为access_token

12)检查access_token的有效性


注意点

对于真实的攻击场景,必须提到以下几点:

A)看起来第6步需要与用户交互,实际上这是不必要的

B)通过回调获得的授权代码有一定的时间限制,但也不是问题

恶意应用程序不想失去对用户帐户的访问只需要在其网站上设置类似如下:19.png

这样的代码将在用户每次加载它时"悄悄"地产生新的授权代码:

20.png


影响


该漏洞允许恶意应用程序保持对受害者帐户的访问活动,即使访问权限被撤销。这不仅是绕过授权,而且还剥夺了受害者管理应用程序访问的能力。

如果access_token有效,说明OAuth2 Provider受漏洞影响。

目录
相关文章
|
安全 Java API
解决 Swagger API 未授权访问漏洞:完善分析与解决方案
Swagger 是一个用于设计、构建、文档化和使用 RESTful 风格的 Web 服务的开源软件框架。它通过提供一个交互式文档页面,让开发者可以更方便地查看和测试 API 接口。然而,在一些情况下,未经授权的访问可能会导致安全漏洞。本文将介绍如何解决 Swagger API 未授权访问漏洞问题。
|
6月前
|
JSON 安全 API
【专栏】四种REST API身份验证方法:基本认证、OAuth、JSON Web Token(JWT)和API密钥
【4月更文挑战第28天】本文探讨了四种REST API身份验证方法:基本认证、OAuth、JSON Web Token(JWT)和API密钥。基本认证简单但不安全;OAuth适用于授权第三方应用;JWT提供安全的身份验证信息传递;API密钥适合内部使用。选择方法时需平衡安全性、用户体验和开发复杂性。
765 0
|
安全 网络协议 Shell
Docker API未授权漏洞复现
Docker API未授权漏洞复现
934 0
|
安全 API
api漏洞系列-邮箱验证API接口无限制,可作为邮箱炸弹
漏洞描述 https://admin.phacility.com/settings/user/toma/page/email/ 中的API接口是无限的,可以用作邮箱炸弹。
414 4
api漏洞系列-邮箱验证API接口无限制,可作为邮箱炸弹
|
安全 API Android开发
api漏洞系列-一个越权漏洞
主要逻辑 Fabric平台帮助你构建更稳定的应用程序,通过世界上最大的移动广告交易平台产生收入,并使你能够利用Twitter的登录系统和丰富的实时内容,实现更大的分发和更简单的身份识别; 在注册功能(主要是为公司注册)中,缺少适当的授权检查,允许任何用户窃取API令牌。
268 1
api漏洞系列-一个越权漏洞
|
安全 API 开发工具
api漏洞系列-API权限升级
主要逻辑 使用能够嵌入Crashlytics的fabric SDK,用twitter登录到他们的Android/IOS应用程序。用户可以在https://fabric.io/dashboard上管理/跟踪仪表板上的报告。
138 1
api漏洞系列-API权限升级
|
安全 API
api漏洞系列-shopify中一个越权漏洞
主要逻辑 这是文档中所讲到的应用程序可以访问的范围(https://docs.shopify.com/api/authentication/oauth#scopes),但应用可以请求/获得更多范围的访问权,而其中有些范围本不应该是可访问的。
282 1
api漏洞系列-shopify中一个越权漏洞
|
存储 安全 API
api漏洞系列-OAuth的一个问题
漏洞描述 OAuth2 API允许用户将访问他们账户的权限授予第三方应用程序。当然,用户能够管理此类应用程序对其帐户的访问,并可能拒绝任何应用程序的访问。当某些用户拒绝对应用程序的访问时,所有的access_token都将被撤销并变得无效。但是除了access_tokens应该被撤销以外,授权码(它是OAuth2授权流中使用的中间令牌)也必须被撤销。 在撤销访问时,Vimeo OAuth2 API没有撤销其授权代码。它可能被利用于恢复访问用户帐户。 复现步骤
139 0
api漏洞系列-OAuth的一个问题
|
安全 API
api漏洞系列-OAuth中的race conditions问题
漏洞描述 大多数OAuth2 的API实现在用于处理访问令牌或刷新令牌的请求的时候似乎有多个竞争条件漏洞。 竞争条件允许恶意应用程序获得多个access_token和refresh_token对,而实际上应该只生成一对。而且,当访问被撤销时,它会导致授权绕过。
130 0
api漏洞系列-OAuth中的race conditions问题
|
安全 API iOS开发
api漏洞系列-api速率限制绕过
漏洞描述 该漏洞是关于2FA的绕过,Slack Web应用程序有速率限制实现。在执行4-6次失败的2FA尝试后,速率限制逻辑将被筛选并要求用户等待下一次尝试(防止自动2FA被暴力破解) 使用iOS App(iOS 9.3.3 iPad Air 2)进行相同的测试,发现API端点/API/auth.signin没有该措施。 攻击者可以暴力破解2FA并进入用户(受害者的帐户) 漏洞接口: /api/auth.signin
376 0
api漏洞系列-api速率限制绕过