Hpdoger's Blog.

Oauth2的两类漏洞挖掘

Word count: 545 / Reading time: 2 min
2019/02/14 Share

Oauth2的两类漏洞挖掘

一直忘了总结这个,结合OPPX的网站(无漏洞站点)说明一下

redict_uri限制不严格(Oauth配置错误)

逻辑

一般登陆选项是这样,常见的是QQ/微信/微博/…授权登陆

点击QQ授权的时候请求包和返回包如下

request:

1
2
3
POST /oauth2.0/authorize HTTP/1.1
Host: graph.qq.com
response_type=code&client_id=100498628&redirect_uri=https%3A%2F%2Fmy.oppo.com%2Fauth%2Fqqcallback&scope=get_user_info%2Cadd_share%2Clist_album%2Cadd_album%2Cupload_pic%2Cadd_topic%2Cadd_one_blog%2Cadd_weibo%2Ccheck_page_fans%2Cadd_t%2Cadd_pic_t%2Cdel_t%2Cget_repost_list%2Cget_info%2Cget_other_info%2Cget_fanslist%2Cget_idolist%2Cadd_idol%2Cdel_idol%2Cget_tenpay_addr&state=49085978f5e969063165246c6d07e062&switch=&from_ptlogin=1&src=1&update_auth=1&openapi=80901010&g_tk=1156350624&auth_time=1550070856795&ui=97557FF6-0331-4598-BC09-6CD21B7106E0

response:

1
2
3
4
5
6
7
HTTP/1.1 302 Moved Temporarily
Server: nginx
Date: Wed, 13 Feb 2019 15:17:13 GMT
Content-Type: text/html
Content-Length: 0
Connection: close
Location: https://my.oppo.com/auth/qqcallback?code=5E0AA09C0CA8179C186688ABAF4BE043&state=49085978f5e969063165246c6d07e062

流程:请求graph.qq.com获得授权,拿到auth code后拼接到redirect_uri再请求,这点可以在返回包中的Location看到。

漏洞思路就是redict_uri限制不到位,严重的情况是没有限制域,一般情况是redict_uri可以到子域。QQ做了限制,拿cline_id和redirec_uri比对,不相符就返回False,如下

案例-第三方帐号快捷登录授权劫持漏洞

修改redirect_uri到子域(一般是论坛站点,可以加载外域图片的地方,或者是可以XSS的地方)。location跳转到子域后访问我们外域地址,referer就携带了code。

相关链接

KEY:https://gh0st.cn/archives/2018-02-12/1

无state导致CSRF产生的账户接管

用户在第三方网站A上登录后,通过Authorization code方式的绑定流程。

案例

拿绑定QQ为例子。

一般在登陆后的个人中心页面有绑定社交用户的功能,依然是请求greph.qq.com获取code,拼接到redirect_uri访问后完成绑定。如果没有state参数,用户在A登陆后进行,点击攻击者的redict_uri+code链接,就把用户A绑定在了攻击者的QQ上。可以看作是CSRF

相关链接

OAuth2.0忽略state参数引发的CSRF漏洞:https://blog.csdn.net/gjb724332682/article/details/54428808

Oauth配置错误导致的账户接管:https://mp.weixin.qq.com/s/6lc6CHVjdXU1Zy4wWRIHzg

CATALOG
  1. 1. Oauth2的两类漏洞挖掘
    1. 1.1. redict_uri限制不严格(Oauth配置错误)
      1. 1.1.1. 逻辑
      2. 1.1.2. 案例-第三方帐号快捷登录授权劫持漏洞
      3. 1.1.3. 相关链接
    2. 1.2. 无state导致CSRF产生的账户接管
      1. 1.2.1. 案例
      2. 1.2.2. 相关链接