结合YS业务分析oauth协议风险
问题描述:
YS 使用QQ互联的openAPI实现QQ登录YS的功能,使用该功能需要在腾讯注册登录时的回调地址,根据oauth协议,用户的code或者access_token将被发送到这个回调地址,而目前出于域名变动等各种因素考虑,目前使用的是通配符域名进行注册,这可能存在用户的access_token被盗取的风险。一旦获取用户QQ的access_token就可以通过openAPI获取此QQ的相关信息。关于oauth协议和开发细节请参考:
http://wiki.connect.qq.com/
测试步骤:
1、 在YS登录页选择“QQ登录”。
2、 在QQ登录页面输入用户名和密码进行认证。
3、 使用burp拦截http://graph.qq.com/oauth2.0/authorize接口请求,将response_type参数的值从code改为token,将回调地址二级域名从test3.YS.com改为bbs.YS.com,最后再记住该请求中的client_id的值(即申请QQ登录时腾讯分配的appid),如下图所示:
4、 可以看到腾讯服务器返回了用户的access_token,并携带该token重定向到了YS BBS,如下图:
5、 此时,如果指定跳转的YS BBS URL存在XSS漏洞,当漏洞被触发时,JS代码可以读取URL参数值,那么通过BBS就可能大量获取用户access_token,从而导致用户信息泄漏。
问题扩展:
该漏洞的关键还是需要跳转的二级域名存在XSS漏洞,就目前YS业务来讲,BBS的安全没有专人负责,并且使用的是第三方站点框架,容易出现公开的漏洞,如果不及时升级维护就可能出现上述的攻击。
解决建议:
在向腾讯申请QQ登录权限时锁定二级域名