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