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

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

缺陷编号:wooyun-2012-012462

漏洞标题:无需client_sec可用QQ登录平台发表空间日志等高权限操作(WooYun-2012-11314衍生)

相关厂商:腾讯

漏洞作者: horseluke

提交时间:2012-09-20 14:16

修复时间:2012-11-04 14:17

公开时间:2012-11-04 14:17

漏洞类型:设计缺陷/逻辑错误

危害等级:低

自评Rank:5

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

WooYun-2012-11314(http://www.wooyun.org/bugs/wooyun-2010-011314 )的报告者@Tater 在阐述漏洞成因时没有说透,其实这是OAuth 2.0中Client-side Implicit Grant潜在的安全隐患,各个支持OAuth 2.0的开放平台都有这问题,其中就包括QQ登录。

详细说明:

该隐患就是,OAuth 2.0中Client-side Implicit Grant获取的access token可以用在Server-side通讯中,而且由于在访问受保护资源时无需传递app secret,而app key又是公开的,结果就由于这种“无绑定token”,导致api无法分辨合法的请求来源,而出现了问题。
(详细将在zone.wooyun.org有详文)
以腾讯的QQ登录开放平台为例,发表空间日志接口(add_one_blog)是需要高权限的。普通人申请的当然不可能有的,不过成功案例就一定有的了。看了看,点点应该是最佳选择。
到它的登录页面查看,记下其client_id:216028


接下来,就是走OAuth 2.0中Client-side Implicit Grant流程了。
首先就是根据文档:
http://wiki.opensns.qq.com/wiki/%E3%80%90QQ%E7%99%BB%E5%BD%95%E3%80%91%E4%BD%BF%E7%94%A8Implicit_Grant%E6%96%B9%E5%BC%8F%E8%8E%B7%E5%8F%96Access_Token
构造出如下url(scope参数猜死人啊…...):
https://graph.qq.com/oauth2.0/authorize?response_type=token&client_id=216028&redirect_uri=http://open.z.qq.com/moc2/success.jsp&scope=get_user_info,add_one_blog,do_like,add_t,list_album
访问之:


一切顺利的话,抓包会发现回调的授权中转页会有access token:


好了,请出server-side脚本(请放置在php服务器上运行):
http://horseluke-code.googlecode.com/svn/trunk/draftCode/oauth2_client_side_side_effect/qq_oauth2.php
填入参数,submit:

漏洞证明:

调用成功~

修复方案:

我也想知道怎么解决啊,怎么兼顾client-side和server-side这两个场景真的好考人智慧啊,这个协议如果再改真的害死开发者啊,难怪Eran Hammer要画圈圈诅咒…...

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


漏洞回应

厂商回应:

危害等级:低

漏洞Rank:3

确认时间:2012-09-20 16:11

厂商回复:

感谢反馈,我们已同步给业务进行处理。

最新状态:

暂无