自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

深入分析IE地址欄內(nèi)容泄露漏洞

安全 漏洞
在本文中,我們探討的對象是IE瀏覽器,盡管該瀏覽器略顯老態(tài),但是其用戶還是很多的,所以不容忽視。我最近對MSRC感到很欣喜,因為他們正在將工作重心移至Edge瀏覽器、設(shè)計漏洞,甚至提高了漏洞賞金,這看起來確實不錯。

[[205159]]

前言

在本文中,我們探討的對象是IE瀏覽器,盡管該瀏覽器略顯老態(tài),但是其用戶還是很多的,所以不容忽視。我最近對MSRC感到很欣喜,因為他們正在將工作重心移至Edge瀏覽器、設(shè)計漏洞,甚至提高了漏洞賞金,這看起來確實不錯。

所有這些都是好消息,但我仍然認(rèn)為現(xiàn)在就急著拋棄IE還為時尚早。例如,現(xiàn)在所有的IE用戶在zombie腳本漏洞(已經(jīng)公開數(shù)月,但是仍然尚未得到修補(bǔ))面前都可能變成僵尸程序。千萬不要忽視這個問題的嚴(yán)重性,請想象一下攻擊者可以做什么:他們可以一直潛伏在你的瀏覽器中,當(dāng)你瀏覽其他網(wǎng)站的時候,他們就有足夠的時間做一些見不得光的事情,比如挖掘數(shù)字貨幣等。此外,IE的阻止彈出窗口功能已經(jīng)被完全攻陷了,但是好像并沒有引起人們的注意。總之,我認(rèn)為這些漏洞應(yīng)該得到修補(bǔ),或至少給IE用戶一個醒目的警告,比如“我們不再支持這個瀏覽器,請使用Microsoft Edge”。

在我看來,微軟正在試圖擺脫IE,這個毫無疑問。不過,如果直接告訴用戶他們的舊版瀏覽器沒有像Edge那樣得到足夠的維護(hù)會顯得更誠實一些。根據(jù)Netmarketshare的統(tǒng)計顯示,IE仍比Edge更受歡迎,兩者用戶之比是17% vs 6%。

我堅信在安全方面IE應(yīng)該像Edge那樣得到同等的對待,否則就應(yīng)該完全放棄它。但是不管未來怎樣,我們現(xiàn)在先來探討一下IE上的另一個漏洞:允許攻擊者知道用戶將要瀏覽的地址。什么,這是讀心術(shù)嗎?不,當(dāng)然不是,下面讓我們來看看IE是如何讓攻擊者做出魔幻般的事情的。

摘要

當(dāng)腳本在object-html標(biāo)簽內(nèi)執(zhí)行時,位置對象將獲得焦點并返回主位置,而不是它自己的位置。 確切地說,它將返回寫入地址欄中的文本。如果讀者是急性子的話,可以先觀看視頻,了解一下攻擊者是如何讀取用戶輸入到IE地址欄內(nèi)的內(nèi)容的!

對象和文檔模式

對象標(biāo)簽的行為方式取決于documentMode的渲染方式。 例如,如果我們在頁面的開頭添加兼容性元標(biāo)記的話,它的外觀和行為就像一個iframe,但它會認(rèn)為這是一個頂層窗口。

  1. <head> 
  2.   <!-- COMPATIBILITY META TAG --> 
  3.   <meta http-equiv="X-UA-Compatible" content="IE=8" /> 
  4. </head> 
  5. <object data="obj.html" type="text/html"></object> 
  6.    
  7. <head> 
  8.   <!-- COMPATIBILITY META TAG --> 
  9.   <meta http-equiv="X-UA-Compatible" content="IE=8" /> 
  10. </head> 
  11. <object data="obj.html" type="text/html"></object> 

在上面的代碼中,“obj.html”在對象內(nèi)部進(jìn)行渲染,并且其內(nèi)容被放入與iframe類似的方框中,然而,雖然在窗口對象與頂層對象進(jìn)行比較時返回值為true,但是它并非頂層窗口。我們可以看一下在對象標(biāo)簽內(nèi)執(zhí)行的代碼:雖然它認(rèn)為window == top,但是事實并非如此。

 

在IE上進(jìn)行測試

我們的對象認(rèn)為它是頂層窗口,甚至其他frameElement之類的成員也總是返回null——這種行為只出現(xiàn)在(IE的)頂層窗口中。

下面,讓我們嘗試相同的代碼在沒有兼容性標(biāo)簽的情況下會怎樣。這時,該對象就能了解它所在的位置了,并且其行為類似于iframe。

 

在IE上進(jìn)行測試

本質(zhì)上,該對象在較舊的文檔模式中被渲染為一個獨立的實體,但在一個較新的文檔模式中將被渲染為一個iframe。無論如何,在內(nèi)部它們都是WebBrowser控件,所以Trident引擎會暴露相同的成員。

繼承的窗口成員

讓我們重新回到較舊的documentMode,尋找一種利用這個混淆漏洞的方法,不過事情貌似并不那么糟糕,因為跨域限制仍然存在,而且X-FRAME-OPTIONS頭部的工作效果非常好。 有一些成員,如window.name,它們是通過對象繼承得到的(該對象會繼承其父對象的名稱),不過這也不是太糟糕——但是某些廣告技術(shù)會全地使用window.name來跨iframe傳遞信息,這種做法是很危險的。

話雖如此,至少有一個繼承的對象真的會引起麻煩:位置。在對象標(biāo)簽內(nèi),location.href將返回主(頂層)窗口的位置。下面的代碼將其對象的源指向object_location.html,但是當(dāng)我們檢索它的位置時,它返回的是頂層窗口。

 

在IE上進(jìn)行測試

再次重申,這個混淆漏洞本身是沒有用的,因為我們?nèi)匀辉谕粋€域。即使我們可以找到一個頂層的位置,只要我們在同一個域,那也沒有多大意思。為此,我嘗試改變對象的位置,但沒有成功。如果你想在這個領(lǐng)域進(jìn)行研究,我建議可以更深入一些,因為我認(rèn)為會有更多的可能性。無論如何,在嘗試實現(xiàn)UXSS(持久性是現(xiàn)實攻擊中一切的關(guān)鍵)時,我獲得了一個驚喜:當(dāng)對象被注入到onbeforeunload時,我們得到的不再是頂層窗口的位置,而是瀏覽器的將要到達(dá)的位置或當(dāng)前寫入地址欄的內(nèi)容。

換句話說,如果我們在用戶離開主頁面的同時檢索對象的location.href,我們將能夠知道她在地址欄中輸入的內(nèi)容,或者如果點擊鏈接,我們將會獲悉瀏覽器要鏈接的地址。

這里,我們只是中斷新站點的加載并展示用戶的URL。當(dāng)然,如果是攻擊者的話,他們會直接回填地址并加載站點,并且這一切對于用戶來說都是透明的。實際上,在用戶離開時,我們直接執(zhí)行document.write就行了。

  1. window.onbeforeunload = function() 
  2.   document.write('<object data="loc.html" type="text/html" width="800" height="300"></object>'); 
  3.   document.close(); 
  4.    
  5. window.onbeforeunload = function() 
  6.   document.write('<object data="loc.html" type="text/html" width="800" height="300"></object>'); 
  7.   document.close(); 

并在那個恰當(dāng)?shù)臅r刻讀取位置(onbeforeunload)。

  1. document.write("Let me read your mind. You wanted to go here: " + location.href +); 

好了,現(xiàn)在我們就能在用戶離開時獲取對象位置,從而確切地知道她在地址欄中輸入的內(nèi)容。當(dāng)然,它不一定是一個完整的URL,例如,如果用戶在地址欄中輸入單詞,它將自動被轉(zhuǎn)換為搜索查詢URL(IE默認(rèn)為Bing),這當(dāng)然可以被完整讀取!

 

在IE上進(jìn)行測試

責(zé)任編輯:武曉燕 來源: 安全客
相關(guān)推薦

2010-11-26 13:10:17

2010-09-07 14:21:22

PPPoE協(xié)議

2022-04-12 08:30:45

TomcatWeb 應(yīng)用Servlet

2011-03-23 11:01:55

LAMP 架構(gòu)

2017-01-15 22:51:16

2017-09-07 15:29:20

2010-03-08 14:53:48

Linux分區(qū)

2011-09-01 13:51:52

JavaScript

2023-02-01 08:13:30

Redis內(nèi)存碎片

2010-09-29 14:21:22

2022-08-30 07:00:18

執(zhí)行引擎Hotspot虛擬機(jī)

2021-10-29 16:36:53

AMSAndroidActivityMan

2009-12-14 14:50:46

Ruby傳參數(shù)

2009-12-16 16:39:01

Visual Stud

2009-06-10 18:12:38

Equinox動態(tài)化OSGi動態(tài)化

2018-12-18 10:11:37

軟件復(fù)雜度軟件系統(tǒng)軟件開發(fā)

2015-08-03 09:54:26

Java線程Java

2020-12-07 06:23:48

Java內(nèi)存

2013-11-14 17:02:41

Android多窗口

2018-10-25 15:24:10

ThreadLocal內(nèi)存泄漏Java
點贊
收藏

51CTO技術(shù)棧公眾號