当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2014-054896

漏洞标题:太平洋汽车网-QQ OAuth 2.0 redirect_uir CSRF 漏洞

相关厂商:太平洋汽车网

漏洞作者: Johnny

提交时间:2014-03-30 09:53

修复时间:2014-05-14 09:53

公开时间:2014-05-14 09:53

漏洞类型:CSRF

危害等级:中

自评Rank:10

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-03-30: 细节已通知厂商并且等待厂商处理中
2014-03-31: 厂商已经确认,细节仅向厂商公开
2014-04-10: 细节向核心白帽子及相关领域专家公开
2014-04-20: 细节向普通白帽子公开
2014-04-30: 细节向实习白帽子公开
2014-05-14: 细节向公众公开

简要描述:

太平洋汽车网-QQ OAuth 2.0 认证流程中, 没有提供有效的方式来抵抗针对redirect_uir 的CSRF 攻击。如果攻击成功,攻击者不需要知道受害用户的帐户的密码就可登录受害帐户。

详细说明:

太平洋汽车网-QQ OAuth 2.0 认证流程中
https://graph.qq.com/oauth2.0/authorize?response_type=code&scope=get_user_info,get_simple_userinfo,add_topic,upload_pic,add_share&redirect_uri=http%3A%2F%2Fpassport2.pcauto.com.cn%2Fpassport2%2Fapi%2Fopen_oauth.jsp&state=loginBind%3Dhttp%3A%2F%2Fmy.pcauto.com.cn%2Fpassport%2Fopens%2Fbind_done.jsp%26type%3Dqzone_auto%26return%3Dhttp%3A%2F%2Fmy.pcauto.com.cn%2Fsetting%2Fshare.jsp&client_id=219603
太平洋汽车网并没有提供有效方式抵抗针对redirect_uir 的CSRF 攻击。
如果攻击者重新发起一个太平洋汽车网-QQ OAuth 2.0 认证请求,并截获
OAuth 2.0 认证请求的返回。
http://passport2.pcauto.com.cn/passport2/api/open_oauth.jsp?code=B2F61AFEDABB482FFE7245C7C05FAD08&state=loginBind%3Dhttp%3A%2F%2Fmy.pcauto.com.cn%2Fpassport%2Fopens%2Fbind_done.jsp%26type%3Dqzone_auto%26return%3Dhttp%3A%2F%2Fmy.pcauto.com.cn%2Fsetting%2Fshare.jsp
攻击者诱骗已经登录的网用户点击(比如通过邮件或者QQ等方式)。 太平洋汽车网会自动将用户的帐号同攻击者的帐号绑定到一起。
攻击者可以通过其QQ帐号访问受害用户的帐号。

漏洞证明:

1.png


如果登录了太平洋汽车的用户误点了这个request. 太平洋汽车会将用户redirect到主页。

2.png


然后我们进绑定中心可以发现,绑定成功

3.png

修复方案:

建议厂商采取有效的方式来抵抗针对 OAuth 2.0 redirect_uir 的CSRF 攻击。
比如:
1. 在将用户账号绑定至第三方账号之前,强制用户重新输入帐号密码。
缺点: 会牺牲用户体验。 因为大多数用户在登录了以后,是不想再输入密码的。
2. 通过验证 referer的值来抵抗CSRF 攻击, 且必须采用strict mode, 即: 对没有referer 以及,referer 不是厂商所支持的第三方登录的域名下的所有request 进行拒绝。
缺点: 有些网站或者浏览器会将referer的值compress. 因此,可能导致正常用户有时候会绑定帐户失败。
3. 采用与用户session identifier 相关的state 值来保护 OAuth 2.0 request and response。(比如,采用hash将用户的session identifier 盲化作为state的值放在 OAuth 2.0的request中; 或者将session identifier 的值映射到另一串opaque的 state值上)。 并在绑定之前严格验证 state的值。
缺点:可能需要服务器来维持一个 session identifier——state表。
通过对太平洋网站及其旗下的子网站OAuth 2.0的流程的分析,我们发现:
太平洋网站的OAuth 2.0 流程中,将state 参数用成了功能型,(太平洋根据其值来判定应该将返回的第三方code和其下的某一个数据库的用户进行绑定操作。) 但在 OAuth 2.0 Framework中明确指出,state值用来保护针对 redirect_uir的CSRF 攻击。所以,我们建议,太平洋可以在其state值原有的基础上,再加一串opaque值用来抵抗CSRF 攻击。

版权声明:转载请注明来源 Johnny@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:5

确认时间:2014-03-31 14:40

厂商回复:

感谢“Johnny”反馈的问题,该问题确实存在,我们已经在安排处理中。
感谢你对 太平洋系列网站 信息安全作出的贡献。

最新状态:

暂无