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

作者:CQITer小编 时间:2018-05-05 21:55

字号

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

最近在对比云存储解决方案时,我惊讶地发现很多公司仍然在提供无限量云端数据存储服务方案,像OpenDrive公司就是这样(注意别和OpenDRIVE格式规范混淆),OpenDrive公司专为个人、商业团体和公司企业提供无限存储方案。

除了传统的云存储功能外,OpenDrive还以软件客户端和移动APP的应用形式,为使用客户提供存储备份和内容管理解决方案,据OpenDrive官网介绍,包括T-Mobile、Ancestry.com和REMAX在内的很多知名公司,都是其客户群体。

发现

我通过网页客户端,注册了一个OpenDrive的试用账户进行测试。在上传了一些测试文件之后,我留意查看了其标记和API请求后发现,OpenDrive公司网站架构为WordPress,而且包括样式、登录和API使用等很多地方都有明显定制化开发的痕迹。

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

我还通过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)信息转化过来的。

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

上面session_id中剩下的9位数字可能只是相同登录时间下的其它更精确的生成值,例如来自服务器端函数,如PHP的microtime中生成的毫秒。我尝试通过连续发出大量登录请求,来比较生成的session_id值进行验证,正如预测的那样,这些数字都是连续的时间值。

接下来,我决定看看这种会话机制是如何使用的,它对OpenDrive’产品的安全性影响如何。由于网页客户端对该API的调用功能有限,所以我在测试手机上安装了一个OpenDrive的安卓应用APP。

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

在测试手机上部署好请求代理之后,我就登录了自己的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,  "Partner": "OpenDrive",  "SupportUrl": "http:\/\/support.opendrive.com",  "PartnerUsersDomain": ".opendrive.com",  "Suspended": false,  "Affiliation": "0",  "UserUID": "5ac61707c2ee6" }

责任编辑:CQITer新闻报料:400-888-8888   本站原创,未经授权不得转载
继续阅读
热新闻
推荐
关于我们联系我们免责声明隐私政策 友情链接