Oculus CDN伺服器的XSS漏洞
前言
我來分享一個Facebook旗下公司Oculus網站存在的類似XSS漏洞,該漏洞最終獲得了Facebook官方$1500美金的獎勵。
Facebook在2014年3月宣布以20億美元收購虛擬現實(VR)頭戴設備製造商Oculus,Facebook計劃將Oculus的VR技術優勢擴大至新的垂直領域,如通信、媒體和娛樂、教育及其他領域等。
Oculus發布了定製化開源的開發者項目( Custom Developer Items),這項功能已向社區開發者推送。無論你是開發虛擬現實遊戲、社交體驗、娛樂還是教育類應用,都可以使用自己最喜歡的遊戲引擎或我們的原生 SDK 輕鬆地在整個 Oculus 平台上進行開發。它覆蓋了Oculus Rift + Touch 、Oculus Go 和 Samsung Gear VR + 控制器的VR產品,與主流開源的VR開發工具Unity結合,用戶可以定製化地開發屬於自己的應用。
漏洞發現及PoC
在Oculus網站的賬戶管理頁面https://dashboard.oculus.com/,註冊並登錄賬戶後,有一個服務端功能允許開發者上傳應用相關的asset資源文件,且所有asset資源文件都儲存在了」oculuscdn.com」網站中。例如,我們用該服務端功能上傳一個圖片文件時,其發送的POST請求如下:
POST /upload_image/ HTTP/1.1Host: graph.oculus.commultipart/form-data
之後,oculuscdn.com返回的響應如下:
HTTP/1.1 200 OK{「id」: 「1234567890012345」,「handle」: 「HANDLE_TO_THE_IMAGE」,「uri」: 「https://scontent.oculuscdn.com/v/t64.5771-25/12410200_1905973632996555_3168227744525844480_n.png?_nc_cat=0&oh=6163326b2eb5e87c16c6949f1e734611&oe=5AD840C8」}
其中包含了圖片的ID號,稱呼Handle和具體的訪問鏈接URL。可以看到,我們POST請求主機graph.oculus.com,Response中響應的主機為scontent.oculuscdn.com。這裡存在的漏洞就比較簡單了,不需要像之前facebook cdn的那樣需要進行cname域名替換,這裡直接把 /v/ 和HASH串去掉,就能訪問到目標圖片了。整個測試過程如下:
上傳PNG圖片,用BurpSuite攔截抓包;
攔截到上傳的PNG圖片內容,把惡意的帶XSS Payload的js外鏈添加在其末尾;
成功上傳後,從響應內容中提取出圖片上傳後的具體訪問URL鏈接;
然後,把URL中的 「/v/「 和 HASH串去掉去掉,再把上傳圖片的後綴格式由.jpg改為.html,就能成功載入之前添加進入的js惡意Payload了。
這裡,我用到的帶XSS Payload的js外鏈為:
https://www.amolbaikar.com/wp/js/oculus.js
最終的請求鏈接如下:
https://scontent.oculuscdn.com/t64.5771-25/12410200_1905973632996555_3168227744525844480_n.html
PoC視頻:
漏洞影響
該漏洞允許攻擊者在Oculus CDN伺服器上執行任意JS文件,好在有沙盒防護機制,其不能讀取用戶的cookies/session信息,但應用在實際的攻擊場景中,該漏洞可以繞過Facebook的鏈接黑名單系統 Linkshim,也能用其實施釣魚行為。
漏洞上報進程
2018.3.19: 漏洞初報
2018.3.22: 技術詳情提供
2018.3.22: Payload測試
2018.3.23: 漏洞有效性認可
2018.5.25: 漏洞修復
2018.6.1: $1500賞金髮放
*參考來源:amolbaikar,clouds編譯,轉載請註明來自FreeBuf.COM
![](https://pic.pimg.tw/zzuyanan/1488615166-1259157397.png)
![](https://pic.pimg.tw/zzuyanan/1482887990-2595557020.jpg)
※如何多視角發現安全問題,「淘」到不一樣的漏洞 |精品公開課
※挖洞經驗 | 用跨站搜索在谷歌問題跟蹤平台實現敏感信息獲取
TAG:FreeBuf |