OAuth的原理和授权流程
OAuth(开发授权)是一个开放标准,它的意思是允许第三方网站在用户授权的前提下访问用户在某一网站上存储的各种私密信息(如照片,视频,联系人列表)等,而这种授权无需将用户名和密码提供给第三方应用,如我们常见的QQ登入、微信登入等。
目前我们常见的版本为OAuth2.0,OAuth2.0认证和授权的过程中存在四个非常重要的角色,它们分别是Resource Owner:资源的拥有者,即用户
,Client:第三方接入应用
,Resource Server:数据获取的服务器
,Authorization Server:认证服务器
。
OAuth2.0认证和授权的运行流程:
当Resource Owner(用户)访问Client(第三方接入应用)时,Client会要求用户进行授权,然后用户会连接到认证服务器进行授权,授权成功后认证服务器将会携带Auth Code重定向到Client,Client收到Auth Code后将会向认证服务器请求Access Token,然后认证服务器再返回Access Token,接下来Client就能拿到这个token去Resource server存取用户资源了。
授权的四种模式:
授权码模式(authorization code)、简化模式(implicit grant type)、密码模式(Resource Owner Password Credentials Grant)
图中我们可以看到,百度提供了QQ和微博两种第三方登入方式。这两个就是OAuth服务的提供平台,也即是
Authorization Server
,而百度就是Client
。·、Resource server
是QQ、微博。
OAuth2.0的常见漏洞以及具体案例:
是OAuth平台自身的漏洞,这类漏洞通常是由于OAuth提供者对redirect_uri这个参数的过滤不严,导致授权成功后跳转到非预期的域名,从而使认证码或token被泄露。
wooyun-2014-059403、wooyun-2014-059427、
wooyun-2014-059639、
wooyun-2014-059676腾讯OAuth平台redirect_uri过滤不严可能导致用户信息遭窃取.
看完了四个案例,我们来总结一下关于OAuth平台自身的漏洞的常见绕过方式:Bypass的思维导图如下所示:
OAuth2.0配合CSRF劫持第三方账号:
这类漏洞常见于绑定账号处,由于绑定请求处存在CSRF漏洞,导致该请求能被恶意伪造,使得受害者在不知情的情况下将自己的应用账号绑定到攻击者的账号上。
攻击者用自己的账号向服务器发送绑定请求来进行账号绑定,当认证完成后,OAuth提供方会返回给第三方一个auth code作为确认绑定的依据,并携带在一个URL中。当用户访问这个URL之后,就会完成绑定的最后操作。
wooyun-2014-054888天涯–新浪OAuth 2.0 redirect_uir CSRF 漏洞
wooyun-2015-0145396知乎某处OAuth的身份劫持漏洞