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