什么是OAuth2.0认证

OAuth2.0其实就是第三方登陆的一种授权类型,其给授权流程定义了一个标准。

Oauth的流程与种类

隐式

#

识别OAuth认证与OAuth的攻击注意

一般Oauth登陆的文章再文件进入时会向授权服务端发送类似如下的请求

1
2
https://xxxx.xx/auth?client_id=12345&redirect_uri=https://client-app.com/callback&response_type=token&scope=openid%20profile&state=ae13d489bd00e3c24 HTTP/1.1
Host: oauth-authorization-server.com

当然参数不止有如上的两个还有很多,但是一般都会包含着两个参数
再发现服务端时我们可以尝试服务如下路径来尝试查看其配置文件
1
2
/.well-known/oauth-authorization-server
/.well-known/openid-configuration

靶场:通过OAuth隐式流程绕过认证

其实这个靶场更加类似于idor。
首先隐式流程会将中间的session直接返回前端而不是客户端的后端,着导致其任意被浏览器插件之类的劫持,所以相对不安全,目前也没有几个使用隐式流程的Oauth了。

通过OpenID注册导致的ssrf

CSRF保护有缺陷

OAuth账户被redirect_uri劫持

redirect_uri就是一个重定向标识,当这个标识服务端并没有验证其合法性可以进行篡改时就会造成服务端会将最后的token重定向到攻击者定义的redirect_uri从而造成redirect_uri被篡改。

这个威胁再绝大多数常见下其实只要被登陆态的用户点击一下就会造成token的劫持。因为登陆态的用户一般都会再浏览器中存储下oauth验证流程的中间session从而自动跳过密码输入,重新生成一个token然后重定向到redirect_uri从而将token泄露。造成1点击账号劫持,如果这个平台是个可以发送帖子的平台且存在iframe表单的html注入那么久会造成0点击账号劫持

靶场

通过代理页面窃取代码和访问令牌

通过开放重定向

通过xss,html注入等