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