欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

看我如何发现OpenDrive云存储平台的会话机制漏洞

来源:本站整理 作者:佚名 时间:2018-05-04 TAG: 我要投稿


最近在对比云存储解决方案时,我惊讶地发现很多公司仍然在提供无限量云端数据存储服务方案,像OpenDrive公司就是这样(注意别和OpenDRIVE格式规范混淆),OpenDrive公司专为个人、商业团体和公司企业提供无限存储方案。
除了传统的云存储功能外,OpenDrive还以软件客户端和移动APP的应用形式,为使用客户提供存储备份和内容管理解决方案,据OpenDrive官网介绍,包括T-Mobile、Ancestry.com和REMAX在内的很多知名公司,都是其客户群体。
发现
我通过网页客户端,注册了一个OpenDrive的试用账户进行测试。在上传了一些测试文件之后,我留意查看了其标记和API请求后发现,OpenDrive公司网站架构为WordPress,而且包括样式、登录和API使用等很多地方都有明显定制化开发的痕迹。

我还通过HTTP代理注意到,在整个存储过程中,存储机制会对两个API服务端发起调用,一个是www开头且用cookie进行验证的子域名服务端,另一个是如下以web开头并用单独的 session ID 进行验证的API服务端:
GET https://web.opendrive.com/api/v1/download/file.json/ABC123***REMOVED***?session_id=1517592191112474005&inline=0&preview=1 HTTP/1.1
Host: web.opendrive.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36
Accept: image/webp,image/apng,image/*,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
注意上述GET请求中session_id中的值:
session_id=1517592191 112474005
这个值与Unix系统下的时间戳有些类似,它极有可能是用户初始登录请求时的时间点转化过来的信息—不太好是吧!实际上,前10个数字就是从我账户首次登录时的 日期/时间(data/time)信息转化过来的。

上面session_id中剩下的9位数字可能只是相同登录时间下的其它更精确的生成值,例如来自服务器端函数,如PHP的microtime中生成的毫秒。我尝试通过连续发出大量登录请求,来比较生成的session_id值进行验证,正如预测的那样,这些数字都是连续的时间值。
接下来,我决定看看这种会话机制是如何使用的,它对OpenDrive’产品的安全性影响如何。由于网页客户端对该API的调用功能有限,所以我在测试手机上安装了一个OpenDrive的安卓应用APP。

在测试手机上部署好请求代理之后,我就登录了自己的OpenDrive账户,开始浏览文件、移动文件夹、访问我账户下的其它信息。经过观察,我发现,所有API服务端都使用了相同的,且存在漏洞缺陷的以下session_id生成机制,如以下请求示例:
GET https://ai2.opendrive.com/api/v1/users/info.json/1517592191112474005 HTTP/1.1
session_id: 1517592191112474005
Host: ai2.opendrive.com
Connection: Keep-Alive
Accept-Encoding: gzip
User-Agent: okhttp/3.7.0
上述请求发起来,返回了相应的JSON响应如下:
{
 "UserID": 1853669,
 "AccessUserID": 0,
 "UserName": "***REMOVED***",
 "UserFirstName": "***REMOVED***",
 "UserLastName": "***REMOVED***",
 "PrivateKey": "***REMOVED***",
 "Trial": "0",
 "UserSince": "1517591533",
 "BwResetLast": "1517591533",
 "AccType": "1",
 "MaxStorage": "5120",
 "StorageUsed": "361144",
 "BwMax": "1024",
 "BwUsed": "0",
 "FVersioning": "0",
 "FVersions": "10",
 "DailyStat": 0,
 "UserLang": "en",
 "MaxFileSize": "102400",
 "Level": "1",
 "UserPlan": "Basic Plan",
 "TimeZone": "America\/Los_Angeles",
 "MaxAccountUsers": "1",
 "IsAccountUser": 0,
 "CompanyName": "",
 "Email": "***REMOVED***",
 "Phone": "",
 "Avatar": null,
 "AvatarColor": "a38f84",
 "AdminMode": 1,
 "DueDate": "0000-00-00",
 "WebLink": "",
 "PublicProfiles": 0,
 "RootFolderPermission": 2,
 "CanChangePwd": 1,
 "IsPartner": 0,

[1] [2]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载