當前位置:
首頁 > 新聞 > 看我如何發現雅虎郵箱APP的存儲型XSS漏洞

看我如何發現雅虎郵箱APP的存儲型XSS漏洞

今天我要分享的是參與雅虎(Yahoo!)漏洞眾測項目發現的一個關於雅虎郵箱 iOS應用的漏洞,最終,憑藉該漏洞,我進入了雅虎安全名人堂並獲得了$3500美金獎勵。


漏洞情況

我測試的對象是 Yahoo! Mail iOS APP應用,也就是雅虎郵箱的iOS版本,在該APP應用程序的xml文件中存在一個存儲型XSS漏洞。攻擊者可以利用XML特性構造任意HTML/Javascript代碼嵌入郵件,在該APP用戶打開郵件時,都可以實現這種任意代碼渲染呈現,極端點來說,利用XML的實體擴展攻擊,可以形成DoS攻擊,造成APP服務崩潰。



XML實體擴展攻擊:XML Entity Expansion實現,通過在XML的DOCTYPE中創建自定義實體的定義實現,比如,這種定義可以在內存中生成一個比XML的原始允許大小大出很多的XML結構,用它來使這種攻擊得以耗盡網路伺服器正常有效運行的必需內存資源。


漏洞分析

漏洞初報


在任意的雅虎郵箱登錄網頁或客戶端中登錄進入你的雅虎郵箱,然後上傳以下樣式的一個xml文件作為郵件附件,之後,把這封帶以下 yahoo-xss.xml 附件的郵件,發送到你自己的雅虎郵箱或另一雅虎測試郵箱中去。

<?xml version=」1.0″ encoding=」utf-8″?>
<svg xmlns=」http://www.w3.org/2000/svg」>
<script>prompt(document.location)</script>
</svg>

用雅虎郵箱iOS客戶端(Yahoo! Mail iOS APP),進入你的收件測試雅虎郵箱,查看 yahoo-xss.xml 附件,打開它,看看是否有XSS反應。結果是當然有的,會嚇了你一跳。如下:


注意:我也搞不懂啥原因,雅虎郵箱iOS應用中的XML渲染機制非常怪異危險。如果你收到包含以上yahoo-xss.xml 附件的多個附件,那麼,即使你打開其它附件的時候,這個 yahoo-xss.xml 觸發的存儲型XSS都會解析跳出。


我匆匆忙忙地上報了這個漏洞,以下是雅虎安全團隊人員在HackerOne上給我的回應:

到了這步,接下來我要做的就是想辦法來最大化利用這個漏洞,看看能對雅虎郵箱iOS應用形成什麼比較壞的安全威脅和影響。但無奈我一時半會也沒什麼頭緒,只好先放一放。


漏洞續報


後來有一天,我突然想到了一種提升漏洞利用且安全無害的方法,那就是我可以用HTTP請求,像「GET」方式一樣,嘗試對本地APP客戶端資源進行獲取!BingGo!我一試,真成了!我可以用這種方法獲取到雅虎郵箱iOS應用的整個緩存數據,其中包括用戶cookie、通訊錄列表、郵件內容等等。


漏洞利用復現


首先,在任意雅虎郵箱網頁或客戶端中登錄你的雅虎郵箱賬戶,上傳一個如下包含如下代碼的XML文件,然後,把它作為附件發送到你的另外一個測試雅虎郵箱中(受害者郵箱)。

在你的雅虎測試郵箱中打開這個收到的XML附件,基於上面我提到的那個「怪異」的XML解析原因,這裡可以想像一種情況:當攻擊者向你發送了一個PPT文檔,但在附件中也附加了以上那個可以觸發XSS的XML文件,那麼,當你打開收到的PPT文檔時,這個XML文件也就會同時觸發XSS反應。也就是說,無論你有多少個附件(包括視頻附件),只要包含以上那個XML附件,你打開其它任何一個附件,都會奇怪地觸發XML文件中XSS漏洞。


利用該漏洞,構造key.xml,我可以獲取受害者郵箱中包括發送者、接收者和聯繫人在內的通訊錄信息。在XML附件代碼中,XSS漏洞會首先顯示客戶端的瀏覽器版本信息,然後是定位文件位置,再之後是獲取郵件列表信息(這裡看網速,估計需要30秒左右的時間)。之後,點擊key.xml的OK之後,郵件列表信息就通過GET方式回傳給攻擊者了,像下圖這樣。我是在內部區域網中做的測試,我的Server接收端用nc -lvvv 8090開啟了8090埠監聽:


利用該漏洞,構造cachedbpost.xml,我可以獲取受害者的Cookie信息。點擊cachedbpost.xml的OK之後,整個Cache.db文件就會通過POST方式回傳給攻擊者,如下圖所示。我在內部區域網中做的測試,我的Server接收端用nnc -lvvv 8090 > yahoo.db命令開啟了8090埠監聽,並把Cache.dbd存儲為yahoo.db:


收到完整的Cache.db文件之後,我們把其中的標題頭內容過濾,用以下命令檢索形成完整的受害者cookie信息:


strings yahoo.db | grep -i Cookie -A 10 -B 5


另外,還可以按http服務端來進行枚舉,形成對特定網站的請求cookie:



strings yahoo.db | grep -i https


雅虎安全團隊工作人員接收到該漏洞後,迅速進行了分類、修復和處置。


漏洞影響


任何攻擊者可以利用該漏洞,構造特定的XML文件發送給任何用戶,進而獲取到受害者用戶郵箱中包括發送者、接收者、Cookie和聯繫人在內的敏感信息。



我的測試環境:


iPhone 6 – iOS v11.2.5.


受影響iOS客戶端版本:


Yahoo! Mail app v4.XX.X (XXXXX)


*參考來源:omespino,clouds編譯,轉載請註明來自FreeBuf.COM


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 FreeBuf 的精彩文章:

再談Wannacry,安全狗CEO陳奮道出網路安全新時代三大特徵
BlackHat 2018 | 55款大會軟體工具盤點

TAG:FreeBuf |