网站地图    收藏   

主页 > 后端 > 网站安全 >

金山快盘手机客户端任意进入他人快盘账号 - 网

来源:自学PHP网    时间:2015-04-17 11:59 作者: 阅读:

[导读] 本节目由@imlonghao 独家赞助复测。(片头)云端存储,快捷方便。(同期声顾客:通过网盘我就可以在安卓看小说了)抓包修改,任意进入。(同期声安全研究者:改几个字节,你的隐私...

本节目由@imlonghao 独家赞助复测。

(片头)
云端存储,快捷方便。(同期声顾客:“通过网盘我就可以在安卓看小说了”)
抓包修改,任意进入。(同期声安全研究者:“改几个字节,你的隐私文件就一览无余”)
是什么,让快盘手机版出现漏洞?(同期声快盘竞争对手(某网盘)研发者:“一身冷汗,我们侥幸没让用第三方账号登录而已”)
云时代的认证传递,应该由谁保障?(同期声记者:“当我们还在打口水仗推脱谁该负责的时候,用户已在云中遭受不测”)

 即将播出《云安全的认证困惑》。

(以上文体仿CCTV新闻频道《新闻调查》,在此致谢。)

=====================分===隔===符 =================

 

详细说明:

 

金山快盘手机客户端,在使用微博OAuth 2.0授权信息换取自己认证信息的过程中,一次性犯下两类常见的逻辑设计缺陷,导致可以任意进入他人快盘账号;但前提是,快盘帐号需要绑定微博。

具体犯下的错误有:
(问题一)OAuth 2.0无绑定token问题:由于OAuth 2.0的“无绑定token”特性(http://article.yeeyan.org/view/50978/307535 ),导致第三方应用在使用平台方的OAuth 2.0授权(authorize)作为自身应用的认证(authenticate)手段时,缺乏一种有效的认证传递校验和来源检查,从而导致只需要拥有B应用的access token,即可登录到A应用所绑定的服务中。

(问题二)使用错误的OAuth授权信息来用于认证交换:使用了uid来认证用户信息,而不是access token
此案例可见:淘网址sina oauth认证登录漏洞
本来想复测其它公司的网盘,但发现他们碰巧都没有提供微博登录,所以侥幸逃脱此问题。但相信一旦开启,估计也很容易中招。故而此种手机客户端威胁云端安全的案例,需要手机开发者(比如说使用了新浪微博sso sdk的开发者)和相关后端留意(见图)。


 

而这个漏洞还反映出一个问题:Oauth 2.0作为一个框架协议,其中有许多安全细节实际上需要开发者自行去实现,如果平台方将安全细节全部包揽在身上显然是不合适的;但如果将安全细节下放到应用开发者自行保证,那么就很容易出现实现不周而反噬双方,特别在认证传递和交换上会是一个重灾区。如何划分,成为了一个值得研究的后续方向。但无论我们如何争论,用户和黑客已经等不及了……

=====================分===隔===符==================

 

漏洞证明:

 

问题一证明:
OAuth 2.0无绑定token问题,通过拦截新浪微博返回的access token信息,修改成他人的access token和新浪uid,即可进入他人快盘。请注意,这个access token可以使用其它应用获取到的access token。

修改难度中低,因为需要知道受害者在其它应用的access token。此时,一般需要诱骗受害者授权攻击者指定的应用,才可以完成攻击。

(微博授权过程中,我使用了新浪uid 1780xxx登录;然后在下一步登录成功后截获,并将新浪uid 1780xxx在快盘获取的access token“2.00tRjxx”和uid“1780xxx”,替换成新浪uid 1454xxx在其它应用获取的access token“2.00isUxx”和uid“1454xxx”,成功)


 

问题二证明:

使用错误的OAuth授权信息获取,通过拦截要往快盘后端服务器api的数据,将新浪uid替换,即可进入他人网盘。

修改难度低,只需要知道新浪uid即可,同时也需要知道该新浪uid曾登录过快盘。

(微博授权过程中,我使用了新浪uid 1780xxx登录;然后在快盘往后端服务器api发送数据前截获,并替换成新浪uid 1791xxxx,成功)

 


 

=====================分===隔===符

修复方案:

 

危害评定:

就快盘而言,综合认定为“高”。原因如下:

(1)问题一中,要获取用户的access token比较容易,只需要注册第三方应用并诱导用户授权即可。

(2)问题二中,要获取用户的新浪uid极容易,只需要微博搜索即可获知。

(3)定向攻击容易,只需要修改数据包;最终成功率极高,并且只要用户不修改密码,即有永久进入权限。

(4)快盘的用户基数大。

(5)是否有用于access token的来源查询、证明或签名校验,要视乎开放平台的提供情况。如果有,只需要在服务器端修复一般可解决新绑定和登录的漏洞。

修复建议:

(1)手机服务器端,在接收手机客户端的平台认证信息、以换取自家服务的认证凭据时,不能使用没有授权信息的uid来认证换取,而是必须使用具有授权信息的access token来进行;并且必须要对access token进行来源查询、证明或签名校验。

具体而言,已查证的国内各开放平台已知的接口文档如下:

(A)新浪微博开放平台“授权查询”:

http://open.weibo.com/wiki/Oauth2/get_token_info

(B)QQ登录:通用参数中似乎已经进行了此问题的防御(时间问题未验证):
点击此处!

(C)百度开放平台“判定当前用户是否已经为应用授权”(此接口本人未验证是否可防御此问题,请咨询百度开放平台):
点击此处!

(D)人人网“判断用户是否已对App授权”(此接口本人未验证可否可防御此问题,请咨询人人开放平台):

http://wiki.dev.renren.com/wiki/Users.isAppUser

其它开放平台,建议进行相关问题的咨询。

(2)对所有存入的绑定access token进行核查,发现access token中的新浪uid和绑定新浪uid不一致、非快盘appkey授权的access token、过期access token等异常情况均需要全部撤消,要求这些快盘用户重新授权登录。

(3)各开放平台加强教育,提醒开发者注意上述问题

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论