曲速未來 :解剖一個沒有感情的XSS 0day漏洞區(qū)塊鏈
通用K線展示JS庫TradingView存在XSS0day漏洞,可繞過Cloudflare等防御機制。該漏洞被利用會導(dǎo)致用戶帳號權(quán)限被盜、惡意操作等造成資產(chǎn)損失。
0day 漏洞預(yù)警
通用K線展示JS庫TradingView存在XSS 0day漏洞,可繞過Cloudflare等防御機制。該漏洞被利用會導(dǎo)致用戶帳號權(quán)限被盜、惡意操作等造成資產(chǎn)損失。但是也有提出防御方案,即TradingView庫bundles目錄下有個library開頭的js文件,檢查這個文件是否存在漏洞代碼: getScript(urlParams.indicatorsFile),如果存在,臨時解決方案可以把代碼改為:getScript("")。
雖然之前就有對外發(fā)聲并也修復(fù)了,不過隱去了存在漏洞的具體組件:TradingView。但是發(fā)現(xiàn)漏洞細節(jié)已經(jīng)開始失控,特出此文,針對這個漏洞做個剖析。
如上所說的防御方案,聰明的前端黑只要看了防御?案就會知道怎么去構(gòu)造這個利用。
漏洞細節(jié)
TradingView是做K線展示最流行的JS庫,在數(shù)字貨幣交易所、股票交易所等都有大量使用,所以影響目標很好找到。有個測試目標后,我們直接來看觸發(fā)鏈接,隨便找兩個:
通過分析,觸發(fā)最小簡化的鏈接是:
必須存在三個參數(shù):
disabledFeatures、enabledFeatures、indicatorsFile;
indicatorsFile很好理解,而且利用邏輯非常簡單,代碼所在位置:TradingView 庫bundles目錄下有個library開頭的js文件,觸發(fā)點如下:
$.getScript非常的熟悉了,在jQuery時代就已經(jīng)實戰(zhàn)了多次,這個函數(shù)核心代碼是:
看代碼,可以動態(tài)創(chuàng)建一個 script 標簽對象,遠程加載我們提供的 js 文件:https://xssor.io/s/x.js
那么,另外兩個參數(shù)(disabledFeatures與enabledFeatures)為什么是必要的?繼續(xù)看代碼(同樣是library開頭的那個js文件):
這段代碼在觸發(fā)點之前,如果沒有提供合法的disabledFeatures及enabledFeatures參數(shù)格式,這段代碼就會因為報錯而沒法繼續(xù)。很容易知道,合法參數(shù)格式只要滿足這兩個參數(shù)是JSON格式即可。所以,最終利用鏈接是:
漏洞威力
區(qū)塊鏈安全公司 曲速未來 表示:為什么會說到這個XSS可以繞過Cloudflare等防御機制?這個“等”其實還包括了瀏覽器內(nèi)置的XSS防御機制。原因很簡單,因為這是一個DOM XSS,DOM XS的優(yōu)點是不需要經(jīng)過服務(wù)端,不用面對服務(wù)端的防御機制,同時不會在服務(wù)端留下日志(除非自己特別去處理)。也正是因為這是DOM XSS且非常簡單的觸發(fā)方式,瀏覽器端的XSS防御機制也沒觸發(fā)。
然后這個XSS的觸發(fā)域和目標重要業(yè)務(wù)所在的域幾乎沒有做什么分離操作,利用代碼其實非常好寫,比如直接基于$里的一堆方法就可以輕易獲取目標平臺的目標用戶隱私,甚至偷偷發(fā)起一些高級操作。
有經(jīng)驗的攻擊者,是知道如何大批量找到目標的,然后就可以寫出漂亮的利用代碼。
本文內(nèi)容由 曲速未來 (WarpFuture.com) 安全咨詢公司整理編譯,轉(zhuǎn)載請注明。 曲速未來提供包括主鏈安全、交易所安全、交易所錢包安全、DAPP開發(fā)安全、智能合約開發(fā)安全等相關(guān)區(qū)塊鏈安全咨詢服務(wù)。
1.TMT觀察網(wǎng)遵循行業(yè)規(guī)范,任何轉(zhuǎn)載的稿件都會明確標注作者和來源;
2.TMT觀察網(wǎng)的原創(chuàng)文章,請轉(zhuǎn)載時務(wù)必注明文章作者和"來源:TMT觀察網(wǎng)",不尊重原創(chuàng)的行為TMT觀察網(wǎng)或?qū)⒆肪控?zé)任;
3.作者投稿可能會經(jīng)TMT觀察網(wǎng)編輯修改或補充。