来源:自学PHP网 时间:2015-04-17 11:59 作者: 阅读:次
[导读] 利用此漏洞,在网易开放平台注册的第三方应用可以跳过询问用户是否授权的页面,而直接拿到用户的授权访问用户敏感信息正常的oauth授权流程应符合如下几个步骤(假设网易用户已经...
利用此漏洞,在网易开放平台注册的第三方应用可以跳过询问用户是否授权的页面,而直接拿到用户的授权访问用户敏感信息
正常的oauth授权流程应符合如下几个步骤(假设网易用户已经登录): 1,在http://t.163.com/app点击应用
2,访问应用网址,比如:http://158.132.255.52:25006/t163_php_sdk/index_normal.php
3, 应用访问http://api.t.163.com/oauth/request_token取得request token以及request token secret
4, 应用从定向用户到网页,比如 http://api.t.163.com/oauth/authenticate?oauth_token=XXXXXXX&oauth_callback=XXXXXXX, 询问用户是否授权。此页面详细描述是向什么应用授予什么权限,以帮助用户做出选择
5, 用户点击授权按钮,浏览器向授权服务器http://api.t.163.com/oauth/authenticate 发送相应的同意授权信息 (POST命令)
6,应用用已经拿到授权的request token通过http://api.t.163.com/oauth/access_token 换取access token以及access token secret
此漏洞在于恶意的应用可以在第3步后直接忽略第4步,而执行第5步,因此在未得到用户同意(用户不知情)的情况下,拿到用户的授权
漏洞证明:为了验证漏洞的存在,我们创建了一个实验app:
应用名称:oauth_vulnerability_test
应用类型:工具类
Consumer Key:ulHM02MWX0CFx75u
应用创建时间:2012-11-29
我们的试验代码需要用户在点击应用前用已经登录网易,但是只要对代码稍微改进,即使用户在点击应用的时候未登录,我们也可以引导用户登录
访问 http://158.132.255.52:25006/t163_php_sdk/index_normal.php 可以体验正常的授权过程
访问 http://158.132.255.52:25006/t163_php_sdk/index_attack.php 可以直接观察到这个应用可以未经用户许可,拿到用户授权
修复方案:
建议在第4步用户访问http://api.t.163.com/oauth/authenticate?oauth_token=XXXXXXX&oauth_callback=XXXXXXX, 加入随机码,在用户提交同意授权的表单中,需要同时提交这个随机码,以保证这个提交表单确实是用户同意的 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com