謹慎能捕千秋蟬(三)——界面操做劫持與HTML5安全

1、界面操做劫持

1)ClickJackinghtml

ClickJacking點擊劫持,這是一種視覺上的欺騙。前端

攻擊者使用一個透明的、不可見的iframe,覆蓋在網頁的某個位置上,誘使用戶點擊iframe。html5

2)TapJackingweb

如今移動設備的使用率愈來愈高,針對移動設備的特色,衍生出了TapJacking(觸屏劫持)。ajax

手機上的屏幕範圍有限,手機瀏覽器爲了節約空間,能夠隱藏地址欄,手機上的視覺欺騙會更加容易實施。跨域

1. 第一張中最上方顯示了瀏覽器地址欄,同時攻擊者在頁面中畫出了一個假的地址欄;瀏覽器

2. 第二張中真實的瀏覽器地址欄已經自動隱藏了,此時頁面中只剩下假的地址欄;安全

3. 第三張中是瀏覽器地址欄被正常隱藏的狀況。服務器

這種針對視覺效果的攻擊能夠被利用進行釣魚和欺詐。網絡

3)X-Frame-Options

針對傳統的界面劫持,經過禁止iframe來防範。

HTTP頭中有一個響應頭X-Frame-Options,有三個值能夠選擇:

1. DENY:該頁面不容許加載任何 iframe頁面。

2. SAMEORIGIN:該頁面能夠加載相同域名的 iframe頁面。

3. ALLOW-FROM uri:該頁面能夠加載指定來源的 iframe頁面。

 

2、HTML5安全

HTML5中新增的一些標籤和屬性,使得XSS等Web攻擊產生了新的變化,在HTML5 Security Cheatsheet中總結了這些變化。

1)隱藏URL惡意代碼

反射型XSS中,會將惡意代碼寫在URL參數中,這樣的話,用戶也能看到惡意代碼,例以下面的連接:

http://www.csrf.net/csrf.html?id=<script>111</script>

能夠經過window.history來操做瀏覽器的歷史記錄

pushState()有三個參數:狀態對象、標題,可選的URL地址。

history.pushState({},"", location.href.split('?').shift());

執行上面那段代碼後就會將參數隱藏

新的URL地址就是下面這個:

「pushState」還能夠僞造瀏覽器歷史記錄

for(i=0; i<10; i++)
    history.pushState({},"", "/"+i+".html");

2)HTML5下的僵屍網絡

僵屍網絡(Botnet)是指在大量的計算機中植入特定的惡意程序,使控制者可以經過若干計算機直接向其餘計算機發送指令,進行網絡攻擊。

基於Web前端的僵屍網絡能夠用做DDOS攻擊,這裏涉及Web Worker技術CORS處理機制,再經過Web蠕蟲傳播。

Web Worker是一種多線程機制,能夠異步執行惡意JS代碼,而不影響用戶在瀏覽器中的正常操做。

CORS處理機制工做在瀏覽器層面,若是服務器不容許跨站,瀏覽器將攔截服務器返回的結果,也就是說跨域請求,服務器也會正常響應。

那麼就能夠事先寫好一段異步請求的腳本(worker.js),而後經過Web Worker來執行這段腳本,不斷的向目標服務器發起請求。

var worker_loc = 'worker.js';//封裝了ajax請求的腳本
var target = 'http://news.qq.com/photo.shtml';//要攻擊的網址
//可實例化多個Web Worker
var workers = [];
for (i = 0; i < 1; i++) {
      workers[i] = new Worker(worker_loc);
      workers[i].postMessage(target);//跨域消息傳遞
}

 

demo源碼下載:

http://download.csdn.net/download/loneleaf1/9747052

 

參考資料:

淺談Web前端僵屍網絡

相關文章
相關標籤/搜索