更新時(shí)間:2023-06-01 16:05:34作者:佚名
近期來自美國Oy的研究員JoukoPynn?nen發(fā)表了一篇博客,其中演示了蓄意防御者怎么運(yùn)用XSS漏洞攻下雅虎郵箱,將被害者收件箱中的短信發(fā)到外部站點(diǎn);以及建立病毒,這個(gè)病毒可以通過向電郵簽名中添加蓄意腳本,附加在所有傳出的電子電郵中。
因?yàn)樾钜獯a就坐落電郵消息的正文中,代碼會(huì)在被害者打開電郵時(shí)立刻執(zhí)行,不須要其他交互過程。所有問題的根源實(shí)際上在于雅虎郵箱未能正確過濾HTML電郵中潛在的蓄意代碼。
以下是對(duì)這名研究人員博客文章的內(nèi)容編譯:
發(fā)覺歷程
離去年給雅虎鉆洞也快一華誕了,這個(gè)時(shí)間點(diǎn)我也準(zhǔn)備再來一發(fā)。一開始我認(rèn)為基本的HTML過濾應(yīng)當(dāng)不會(huì)再有漏洞了,但在近期寫電郵的時(shí)侯,我發(fā)覺了這些添加附件的選項(xiàng),這種選項(xiàng)我今年倒是沒有太留意。
之后我寫了一封短信,上面包含各類附件,并發(fā)到某外部郵箱,那樣我就可以檢測短信的HTML源碼了。
雅虎郵箱提供了一項(xiàng)功能,可以從云服務(wù)中分享文件。在電郵中進(jìn)行分享以后,文件不會(huì)附在短信的附件中雅虎郵箱登陸首頁,而是會(huì)使用HTML代碼插入一個(gè)鏈接,例如文檔/的鏈接。
在此,data-*HTML屬性吸引了我的留意。首先是由于我今年枚舉了一些雅虎郵箱過濾所容許的HTML屬性,并且沒有才能枚舉出全部屬性。
第二,因?yàn)閐ata-*屬性儲(chǔ)存的為所用的特定應(yīng)用數(shù)據(jù),因此這或許是個(gè)不錯(cuò)的防御發(fā)力點(diǎn)。也就是說,可以在電郵中嵌入一些HTML屬性跨過雅虎郵箱的過濾。
為了逐步了解data-*屬性,我使用的開發(fā)者工具踏入源碼標(biāo)簽,尋求文件中引用的data-url屬性。
我發(fā)覺的鏈接也會(huì)被雅虎郵箱“優(yōu)化”雅虎郵箱登陸首頁,假如你在電郵中鍵入的視頻鏈接,雅虎郵箱都會(huì)手動(dòng)幫你生成一個(gè)“鏈接推進(jìn)卡片”,如右圖所示,卡片中會(huì)包含一些data-*屬性。
當(dāng)用戶打開包含這類“卡片”的短信,雅虎都會(huì)通過嵌入視頻,視頻里面就會(huì)有一個(gè)分享按鍵,這種功能就是通過雅虎郵箱JS代碼的data-*屬性實(shí)現(xiàn)的。
接下去,我嘗試用data-*屬性構(gòu)造電郵,漏洞有了!
假如我們在data-url這個(gè)值中插入冒號(hào),都會(huì)造成分享按鍵的HTML未能正確解讀。
而只要URL對(duì)準(zhǔn)的網(wǎng)站在雅虎的白名單中,例如對(duì)準(zhǔn),雅虎就不會(huì)再進(jìn)行檢測或則編碼。data-url的值會(huì)被拿來設(shè)置div爭創(chuàng)按鍵:
我進(jìn)行的檢測如下:
From: Subject: helloTo: victim@yahoo.comMIME-Version: 1.0Content-type: text/html
當(dāng)我從雅虎郵箱打開電郵時(shí),那段針對(duì)鏈接進(jìn)行“優(yōu)化”的代碼會(huì)使用data-url屬性來渲染按鍵。而掩藏在屬性中的HTML花絮也會(huì)逐漸讀取,我所添加的HTML代碼是一個(gè)包含屬性的
,防御者的蓄意代碼也就得以執(zhí)行。
實(shí)際上,這個(gè)問題的根源可以溯源到雅虎郵箱的一個(gè)函數(shù):
function generateButton(e,t) { ? var n=this,r;
? t.insert([''].join(""));
? r=t.one("."+o);
? n._attachButtonListeners(r);}
這個(gè)函數(shù)名稱為t..(r.,s),第一個(gè)參數(shù)就是短信中嵌入的data-url屬性。
可以看見,頂部HTML的部份就是直接把字符串條紋了上去,沒有做任何更改。
影響
這次發(fā)覺的這個(gè)漏洞的影響跟今年的XSS漏洞實(shí)際上是一樣的。
為了證明漏洞的存在性,我給雅虎安全部委發(fā)了一封短信,短信打開時(shí),會(huì)使用AJAX調(diào)用用戶收件箱中的短信內(nèi)容,并把它發(fā)送到防御者的服務(wù)器。
作者早已于11月12日通過向雅虎安全遞交了漏洞,11月29日雅虎提供了1萬日元的賞金。