謹(jǐn)防web漏洞威脅
謹(jǐn)防web漏洞威脅
謹(jǐn)防web漏洞威脅,那些基于Web應(yīng)用威脅網(wǎng)站安全的罪魁禍?zhǔn)?下面是學(xué)習(xí)啦小編整理的一些關(guān)于網(wǎng)站的九大敵人,供你參考。
網(wǎng)站敵人之一:URL地址欄欺騙
用戶每天通過點(diǎn)擊URL地址瀏覽互聯(lián)網(wǎng)上百上千頁(yè)面。瀏覽一個(gè)頁(yè)面,其實(shí)就是簡(jiǎn)單的兩個(gè)步驟:
1 鼠標(biāo)移動(dòng)到頁(yè)面上想要去的URL地址鏈接,此時(shí)狀態(tài)欄會(huì)顯示URL鏈接的地址;
2 點(diǎn)擊URL鏈接,瀏覽器頁(yè)面會(huì)導(dǎo)航到你想去的頁(yè)面,并且在地址欄中顯示這個(gè)鏈接。
這個(gè)被用戶看似最簡(jiǎn)單最普通的瀏覽頁(yè)面的兩個(gè)步驟,用戶是否思考過以下四個(gè)問題:
(1)狀態(tài)欄中顯示的URL地址,是目標(biāo)URL地址嗎?
(2)地址欄中顯示的URL地址,是目標(biāo)URL地址嗎?
(3)地址欄中顯示的URL地址和導(dǎo)航后的頁(yè)面對(duì)應(yīng)嗎?
(4)拖動(dòng)URL地址到地址欄,會(huì)導(dǎo)航到目標(biāo)URL地址嗎?
我們帶著這些問題往下看。從你點(diǎn)擊到成功加載頁(yè)面,就是短短的1秒鐘時(shí)間,這1秒就足夠進(jìn)行URL地址欄欺騙了。
URL地址欄欺騙,可以分兩類,一個(gè)是點(diǎn)擊URL地址,一個(gè)是拖放URL地址。現(xiàn)代瀏覽器都可以使用onclick事件以及鼠標(biāo)事件onmouseup,onmousedown來實(shí)現(xiàn)點(diǎn)擊欺騙。其次,各個(gè)瀏覽器對(duì)URL編碼解析的差異,也會(huì)導(dǎo)致欺騙的發(fā)生。另一方面,拖拽一個(gè)地址到地址欄的時(shí)候,我們可以使用拖放函數(shù)ondragstart和event.dataTransfer.setData方法,把拖放的地址內(nèi)容替換掉,這樣也就完成了欺騙。
網(wǎng)站敵人之二:URL狀態(tài)欄欺騙
現(xiàn)代瀏覽器狀態(tài)欄的設(shè)計(jì)方式,和以前比較起來有很大的變化。以前的狀態(tài)欄是以一個(gè)瀏覽器獨(dú)立模塊固定在瀏覽器最下端的。而現(xiàn)代瀏覽器狀態(tài)欄的設(shè)計(jì)方式則不同。
這種狀態(tài)欄設(shè)計(jì)最明顯的變化是,當(dāng)你把鼠標(biāo)放在鏈接上時(shí),狀態(tài)欄才會(huì)出現(xiàn),鼠標(biāo)離開時(shí),狀態(tài)欄將會(huì)消失。這樣的呈現(xiàn)方式邏輯上會(huì)存在一個(gè)問題,最左下角的這塊區(qū)域,既是狀態(tài)欄顯示區(qū)域又是頁(yè)面顯示區(qū)域。視覺上給我們的呈現(xiàn)效果就是狀態(tài)欄在頁(yè)面區(qū)域的左下角顯示。因此我們就可以使用腳本模擬狀態(tài)欄,進(jìn)而實(shí)施狀態(tài)欄欺騙。
那么現(xiàn)代瀏覽器狀態(tài)欄這種有陰影有圓角的外形,從技術(shù)角度看是否能夠用腳本實(shí)現(xiàn)?答案是肯定的。在CSS3中增加了圓角(box-shadow)和陰影(border-radius)的方法實(shí)現(xiàn)。未來如果出現(xiàn)類似于模塊區(qū)域越界到頁(yè)面的情況,我們同樣可以使用腳本進(jìn)行偽造欺騙。關(guān)于這種攻擊方式,天融信公司通過與微軟、谷歌、火狐的討論,一致認(rèn)為這確實(shí)是一個(gè)問題,但并不至于造成更大的安全風(fēng)險(xiǎn),所以也暫時(shí)不想更改這種瀏覽器狀態(tài)欄的處理方式。雖然瀏覽器廠商都沒有明確表示這是一個(gè)漏洞,但Bugtraq還是收錄了天融信阿爾法實(shí)驗(yàn)室發(fā)現(xiàn)的三個(gè)漏洞。
漏洞的信息如下:
Microsoft Internet Explorer CSS Handling Status Bar Spoofing Vulnerability
Bugtraq ID: 47547
Google Chrome CSS Handling Status Bar Spoofing Vulnerability
Bugtraq ID: 47548
Mozilla Firefox CSS Handling Status Bar Spoofing Vulnerability
Bugtraq ID: 47549
網(wǎng)站敵人之三:頁(yè)面標(biāo)簽欺騙
瀏覽器從單頁(yè)面,變成多頁(yè)多窗口顯示可以說是設(shè)計(jì)理念上的飛躍?,F(xiàn)代瀏覽器都已經(jīng)支持多窗口這種模式,而且在每一個(gè)窗口頂端都會(huì)有一個(gè)頁(yè)面標(biāo)簽。當(dāng)打開多個(gè)頁(yè)面窗口時(shí),頁(yè)面標(biāo)簽上的logo和標(biāo)題可以指引我們想要去的網(wǎng)站。
這種頁(yè)面標(biāo)簽的指引方式,使得標(biāo)簽欺騙成為可能。這種欺騙方式最早是由國(guó)外安全人員提出,他們把這種欺騙稱之為Tabnabbing。
現(xiàn)在來簡(jiǎn)單介紹一下,頁(yè)面標(biāo)簽欺騙原理:
(1)用戶打開很多網(wǎng)站頁(yè)面窗口瀏覽器網(wǎng)站,這其中就包括攻擊者制作的一個(gè)惡意攻擊頁(yè)面。
(2)當(dāng)這個(gè)攻擊頁(yè)面檢測(cè)用戶不在瀏覽這個(gè)頁(yè)面,也就是說長(zhǎng)時(shí)間內(nèi)失去了焦點(diǎn)。
(3)攻擊頁(yè)面自動(dòng)篡改標(biāo)簽的logo,頁(yè)面標(biāo)題,和頁(yè)面本身。比如全都改成Gmail的。
(4)當(dāng)用戶瀏覽了一圈,由于視覺欺騙,發(fā)現(xiàn)有Gmail的logo。而且通過上面的介紹我們知道,多頁(yè)面多窗口的特點(diǎn)使得用戶要尋找頁(yè)面只能通過標(biāo)簽上的logo和標(biāo)題去分辨。
(5)用戶欣然的點(diǎn)開標(biāo)簽為Gmail的這個(gè)頁(yè)面,進(jìn)去后除了URL地址不是Gmail外,其他所有都是Gmail的內(nèi)容。視覺上的盲區(qū),再次使得用戶可能忽略地址欄中的URL,下意識(shí)的認(rèn)為這是一個(gè)正常的Gmail登錄頁(yè)面。進(jìn)而進(jìn)行登錄操作,這樣賬戶密碼就被盜了,登錄成功后再轉(zhuǎn)向到真的Gmail頁(yè)面。
以上五點(diǎn)就是頁(yè)面標(biāo)簽欺騙的整個(gè)過程?,F(xiàn)在Chrome、Firefox瀏覽器都會(huì)受到這種攻擊的影響。
網(wǎng)站敵人之四:頁(yè)面解析欺騙
這里所說的頁(yè)面解析欺騙,主要是由于瀏覽器處理多個(gè)函數(shù)競(jìng)爭(zhēng)發(fā)生邏輯上的錯(cuò)誤。導(dǎo)致瀏覽器URL地址欄已經(jīng)導(dǎo)航到一個(gè)URL地址,但實(shí)際頁(yè)面卻沒有加載響應(yīng)的頁(yè)面。
通常情況下,導(dǎo)致這種頁(yè)面欺騙是由于導(dǎo)航函數(shù)和對(duì)話框函數(shù)或?qū)戫?yè)面函數(shù)之間的阻塞。例如window.open()和alert(),window.open()和document.write()。例如這個(gè)漏洞可以導(dǎo)致,當(dāng)URL導(dǎo)航到google.com的時(shí)候,頁(yè)面卻被改寫了。
天融信阿爾法實(shí)驗(yàn)室通過研究發(fā)現(xiàn),國(guó)內(nèi)的QQ瀏覽器和搜狗瀏覽器曾存在這樣的漏洞,現(xiàn)在這個(gè)漏洞已經(jīng)得到了修復(fù)。
這種攻擊方式,可以實(shí)現(xiàn)域上面的欺騙,發(fā)動(dòng)釣魚攻擊。當(dāng)傳統(tǒng)的釣魚方式更容易被用戶識(shí)別的時(shí)候,這種利用瀏覽器漏洞進(jìn)行的釣魚可能會(huì)成為一種趨勢(shì)。
網(wǎng)站敵人之五:擴(kuò)展插件攻擊
現(xiàn)在的瀏覽器不像早期是鐵板一塊,基本都可以進(jìn)行擴(kuò)展和定制。除了Adobe flash,Java等這些主流插件外,各個(gè)瀏覽器都在擴(kuò)充自己的插件平臺(tái)。通過擴(kuò)展,可以輔助閱讀,有翻譯文字,過濾廣告,調(diào)試頁(yè)面,標(biāo)簽管理,批量下載,主題更換等等,形形色色,包羅萬(wàn)象。那么這么多插件擴(kuò)展,用戶是否知道自己的瀏覽器中裝了哪些插件呢?對(duì)于企業(yè)來說,是否有部署檢測(cè)員工瀏覽器插件更新呢?據(jù)國(guó)外有關(guān)統(tǒng)計(jì),在瀏覽器上發(fā)生的安全風(fēng)險(xiǎn)中,80%來自于插件擴(kuò)展。
關(guān)于插件上面的安全問題,可以分為兩方面來說。其一,本身這個(gè)瀏覽器插件就是惡意插件,就是攻擊者為了攻擊用戶制作的一個(gè)惡意插件,這種插件作為瀏覽器的擴(kuò)展部分可以通過js腳本訪問DOM操作,這就有可能獲取用戶的信息,比如歷史記錄,密碼等。其二,就是瀏覽器插件本身就正常插件。但這種插件自身出現(xiàn)了漏洞問題,比如在Adobe Acrobat Reader Plugin <= 7.0.x中,出現(xiàn)XSS問題http://[host]/[filename].pdf#[some text]=javascript:[code]。另外就是這個(gè)是正常插件,而且也沒有漏洞問題,但它加載的程序卻有漏洞問題,比如Flashback,60W Mac僵尸,本身java插件沒有問題,但利用java插件加載的惡意java程序,可以利用java的一個(gè)漏洞獲取系統(tǒng)權(quán)限。
關(guān)于插件方面的防御,天融信認(rèn)為可以從兩方面來考慮。一個(gè)是用戶方面,不要安裝任何未知的插件,并且卸載掉瀏覽器中已經(jīng)安裝的未知插件。對(duì)于已經(jīng)插件,時(shí)常的檢測(cè)更新,這里推薦兩種檢測(cè)更新的方式,一個(gè)是火狐官方提供的在線檢查插件,適合任何瀏覽器,另一個(gè)是Qualys Inc.(科力斯)公司提供的在線檢查插件服務(wù)。這兩個(gè)檢測(cè)方式都可以列舉出來你瀏覽器的插件情況。另一方面就是瀏覽器廠商方面,當(dāng)插件安裝時(shí)應(yīng)該有提示,說明這個(gè)插件都有哪些權(quán)限;另一點(diǎn)就是制定更加嚴(yán)格的插件審核機(jī)制,防止惡意插件獲取用戶隱私。當(dāng)然瀏覽器的沙箱機(jī)制,能夠很好的解決這些問題。
隨著HTML5的發(fā)展,很多插件將會(huì)漸漸退出歷史舞臺(tái),比如:IOS、WindowsPhone一開始就不支持Flash。去年Adobe放棄移動(dòng)平臺(tái)上Flash開發(fā),全面轉(zhuǎn)向HTML5開發(fā)。瀏覽器大戰(zhàn),也是插件大戰(zhàn),瀏覽器廠商的目標(biāo)都想把瀏覽器向平臺(tái)轉(zhuǎn)化,第一步就是要先插件擴(kuò)展做成平臺(tái)模式。但現(xiàn)在瀏覽器都是插件擴(kuò)展各自為戰(zhàn),而且很多插件間都會(huì)出現(xiàn)不兼容的問題,統(tǒng)一的插件平臺(tái)什么時(shí)候才能到來呢?這一切只有等待HTML5去解決了。
網(wǎng)站敵人之六:本地存儲(chǔ)攻擊
HTML5提供了一種新的本地存儲(chǔ)方式,這種存儲(chǔ)方式是什么樣的呢?我們來看一看,現(xiàn)在各大瀏覽器都已經(jīng)支持了這種存儲(chǔ)方式接口。這種存儲(chǔ)方式使用HTML5提供的新函數(shù)localStorage()進(jìn)行存儲(chǔ)數(shù)據(jù),存儲(chǔ)的默認(rèn)大小是5M,經(jīng)過我的測(cè)試發(fā)現(xiàn)除了Opera使用base64加密外,Chrome,IE,F(xiàn)irefox,Safari瀏覽器都是明文存儲(chǔ)。其實(shí)base64非常容易解密,所以可以認(rèn)為現(xiàn)代的瀏覽器對(duì)于這種方式基本都是明文存儲(chǔ)。根據(jù)HTML5存儲(chǔ)方式的這新特性,我們應(yīng)該注意哪方面的安全呢?天融信阿爾法實(shí)驗(yàn)室認(rèn)為應(yīng)該從六方面注意:
(1)不可替代Cookie
瀏覽器支持了使用HTTPONLY來保護(hù)Cookie不被XSS攻擊獲取到。而localStorage存儲(chǔ)沒有對(duì)XSS攻擊有任何的抵御機(jī)制。一旦出現(xiàn)XSS漏洞,那么存儲(chǔ)在localStorage里的數(shù)據(jù)就極易被獲取到。
(2)不要存儲(chǔ)敏感信息
上面已經(jīng)提到,基本都是明文存儲(chǔ)。
(3)嚴(yán)格過濾輸入輸出
在某些情況下,在通過在localStorage存儲(chǔ)中寫入或讀取數(shù)據(jù)的時(shí)候,如果數(shù)據(jù)沒有經(jīng)過輸入輸出嚴(yán)格過濾,那么極易可能這些數(shù)據(jù)被作為HTML代碼進(jìn)行解析,從而產(chǎn)生XSS攻擊。
(4)容易遭到跨目錄攻擊。沒有路徑概念,容易遭到跨目錄攻擊。
(5)容易遭到DNS欺騙攻擊。
(6)惡意代碼棲息的溫床。因?yàn)榇鎯?chǔ)空間大了,惡意代碼有可能使用這種方式存儲(chǔ)。
網(wǎng)站敵人之七:繞過瀏覽器安全策略
現(xiàn)代瀏覽器有很多安全策略來防止惡意攻擊。每每瀏覽器出來新的安全策略,攻擊者就會(huì)想著法的去突破它繞過它。瀏覽器安全策略很多,在這里挑選幾個(gè)典型的瀏覽器安全策略,看看這些安全策略是如何被繞過的。這其中包括繞過XSS過濾器,繞過同源策略,繞過Httponly,繞過點(diǎn)擊劫持防御,繞過沙箱。
(1) 繞過XSS過濾器
雖然XSS攻擊越來越多,IE8+,Chrome4+,Safari5+,F(xiàn)F(noscript)都在瀏覽器中嵌入了XSS過濾器。這樣在攻擊者進(jìn)行XSS攻擊的時(shí)候,瀏覽器可以自動(dòng)把XSS代碼過濾掉。這樣就減少了一些安全風(fēng)險(xiǎn)。
繞過XSS過濾器,主要方式是通過代碼變形,比如
雙參數(shù):p1=<script>prompt(1);/*&p2=*/</script>
注釋:<script>/*///*/alert(1);</script>
自動(dòng)閉合:<img src="noexist" onerror=alert();//
UTF-7: +ADw-script+AD4
data URIs: data:[mediatype][;base64],data
(2)繞過同源策略
同源指的是同主機(jī),同協(xié)議,同端口。簡(jiǎn)單地說就是要求動(dòng)態(tài)內(nèi)容(例如,JavaScript或者VBScript)只能閱讀與之同源的那些HTTP應(yīng)答和cookies,而不能閱讀來自不同源的內(nèi)容。繞過同源策略,有的是在授權(quán)模式下繞過,有的就是屬于非法繞過。
通常情況以下幾種方式可以進(jìn)行跨域操作,1在Flash&Silverlight中crossdomain.xml寫入允許跨域的網(wǎng)站。2 HTML5中的Postmessage,CORS兩種方法,提供了兩種新的跨域操作。3 DragAndDropJacking,拖放操作是不受同源策略限制的。4另外由于瀏覽器自身特性缺陷導(dǎo)致跨域,比如一些擴(kuò)展插件接口權(quán)限粒度過大等等都可能導(dǎo)致跨域操作。
(3)繞過Httponly。
Httponly是瀏覽器為了保護(hù)cookie在XSS攻擊不被js腳本獲取的一種方法。這里介紹Apache httpOnly Cookie Disclosure從而繞過Httponly包含的一種方法。在Apache中如果cookie的內(nèi)容大于4K,那么頁(yè)面就會(huì)返回400錯(cuò)誤。返回的數(shù)據(jù)就會(huì)包含cookie內(nèi)容。攻擊的方法是找到一處XSS漏洞,設(shè)置大于4K的cookie。apache報(bào)錯(cuò)后,從中篩選出cookie數(shù)據(jù)發(fā)送到攻擊者服務(wù)器上。這樣我們就成功的繞過了httponly的保護(hù)。
(4)繞過X-Frame-Options
自從Clickjacking這種攻擊技術(shù)2008年出現(xiàn)后,從其技術(shù)發(fā)展階段上分析,可以分為點(diǎn)擊劫持(Clickjacking)、拖放劫持(Drag&Drop jacking)和觸摸劫持(Tabjacking)三個(gè)階段。這三種劫持手段已經(jīng)構(gòu)成了瀏覽器前端劫持體系。主要的技術(shù)實(shí)現(xiàn)手段是隱藏層+Frame包含。為了防御這種攻擊,瀏覽器加入了X-Frame-Options頭部,用來判斷頁(yè)面是否可以被Frame包含。如果我們脫離了Frame這種方法,而且還能實(shí)現(xiàn)點(diǎn)擊劫持的這種攻擊效果,就算是我們繞過了X-Frame-Options這種防御方式。這種方法還是有的,我們構(gòu)造多個(gè)頁(yè)面,使用history.forward(),history.back()使頁(yè)面在設(shè)計(jì)好的模式下迅速的切換進(jìn)而劫持用戶的點(diǎn)擊。詳細(xì)的過程可以參看,http://lcamtuf.coredump.cx/clickit/。此攻擊方式設(shè)計(jì)復(fù)雜,且需高交互。
(5)繞過沙箱
瀏覽器沙箱技術(shù)是有效保護(hù)用戶不被木馬病毒侵犯的一種方法。雖然在過去三年的Pwn2Own大會(huì)上,Chrome是唯一 一個(gè)沒有被攻破的瀏覽器,但Chrome沙箱并不是不可以突破。在Pwn2Own 2012 黑客花費(fèi)了6個(gè)不同類型的bug,成功的突破了沙箱。我們假設(shè)一個(gè)月發(fā)現(xiàn)一個(gè)bug,6個(gè)就是半年,然后再試著突破沙箱。所以繞過沙箱將越來越難,不然google也不會(huì)把獎(jiǎng)金提升的越來越高,成功突破沙箱執(zhí)行代碼可以獲得最高6萬(wàn)美金的獎(jiǎng)勵(lì)。
網(wǎng)站敵人之八:隱私安全
現(xiàn)在互聯(lián)網(wǎng)更加注重個(gè)人隱私。現(xiàn)代瀏覽器也考慮到這方面的問題,提供了隱身模式,在隱身模式中本地Cookie,搜索記錄,臨時(shí)文件等不會(huì)被記錄,但書簽被記錄,網(wǎng)站服務(wù)器也會(huì)記錄用戶的訪問痕跡。現(xiàn)代瀏覽器隨著功能的增多,很多情況都會(huì)自動(dòng)收集一些本地信息上傳到服務(wù)器,這些信息就極易可能涉及到個(gè)人隱私。包括地理位置,崩潰報(bào)告,同步功能,在線翻譯,語(yǔ)音輸入,自動(dòng)更新,各種插件擴(kuò)展……。那么瀏覽器廠商也意識(shí)到了,這種自動(dòng)收集信息行為,有可能會(huì)讓用戶覺得自己隱私泄漏。所以每個(gè)瀏覽器在其官方頁(yè)面都有隱私聲明,來告知用戶瀏覽器會(huì)自動(dòng)收集哪些本地信息,這些信息是否會(huì)涉及到用戶隱私等等。那么瀏覽器收集的信息內(nèi)容一旦超越了自身的隱私聲明范圍,就用可能是一種隱私泄漏行為。所以這些隱私聲明對(duì)瀏覽器廠商和用戶來說都非常有意義。
網(wǎng)站敵人之九:安全特性差異化
現(xiàn)代瀏覽器從功能上和模式上都沒有一個(gè)成型標(biāo)準(zhǔn),使得各大瀏覽器廠商都根據(jù)自己的想法在做瀏覽器。這也使得瀏覽器產(chǎn)生很多差異性?,F(xiàn)代瀏覽器主要有以下幾個(gè)差異:HTML5支持,雖然現(xiàn)在HTML5標(biāo)準(zhǔn)還沒有正式發(fā)布,但能更多更全的支持HTML5標(biāo)準(zhǔn),已經(jīng)成為判斷一個(gè)瀏覽器優(yōu)略的準(zhǔn)則。URL編碼差異,更多的編碼解析差異可以看谷歌發(fā)布的瀏覽器安全手冊(cè),從2008年發(fā)布以來,現(xiàn)在還在持續(xù)更新著。安全特性支持,對(duì)防御攻擊而加入的安全策略也不盡相同。我們?cè)敢庀嘈艦g覽器的這些差異性是良性的,這可以使得各個(gè)瀏覽器互相學(xué)習(xí)模仿彼此的長(zhǎng)處和優(yōu)勢(shì),更好的促進(jìn)了瀏覽器的發(fā)展。但這些差異讓網(wǎng)站安全建設(shè)策略必須將各個(gè)瀏覽器的特點(diǎn)都考慮進(jìn)來,這無疑加大了網(wǎng)站安全建設(shè)的難度。