標籤:手機瀏覽器 地址欄 iframe 空間 html5
一、介面操作劫持
1)ClickJacking
ClickJacking點擊劫持,這是一種視覺上的欺騙。
攻擊者使用一個透明的、不可見的iframe,覆蓋在網頁的某個位置上,誘使使用者點擊iframe。
650) this.width=650;" src="http://images2015.cnblogs.com/blog/211606/201702/211606-20170204131625823-2004021452.png" width="625" style="border:0px;margin-top:0px;" />
2)TapJacking
現在行動裝置的使用率越來越高,針對行動裝置的特點,衍生出了TapJacking(觸屏劫持)。
手機上的螢幕範圍有限,手機瀏覽器為了節約空間,可以隱藏地址欄,手機上的視覺欺騙會更加容易實施。
650) this.width=650;" src="http://images2015.cnblogs.com/blog/211606/201702/211606-20170204132916573-1653525794.png" width="590" style="border:0px;margin-top:0px;" />
1. 第一張中最上方顯示了瀏覽器地址欄,同時攻擊者在頁面中畫出了一個假的地址欄;
2. 第二張中真實的瀏覽器地址欄已經自動隱藏了,此時頁面中只剩下假的地址欄;
3. 第三張中是瀏覽器地址欄被正常隱藏的情況。
這種針對視覺效果的攻擊可以被利用進行釣魚和欺詐。
3)X-Frame-Options
針對傳統的介面劫持,通過禁止iframe來防範。
HTTP頭中有一個回應標頭X-Frame-Options,有三個值可以選擇:
1. DENY:該頁面不允許載入任何 iframe頁面。
2. SAMEORIGIN:該頁面可以載入相同網域名稱的 iframe頁面。
3. ALLOW-FROM uri:該頁面可以載入指定來源的 iframe頁面。
二、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());
執行上面那段代碼後就會將參數隱藏。
650) this.width=650;" src="http://images2015.cnblogs.com/blog/211606/201702/211606-20170204150739776-2043335397.png" style="border:0px;margin-top:0px;" />
新的URL地址就是下面這個:
650) this.width=650;" src="http://images2015.cnblogs.com/blog/211606/201702/211606-20170204150823026-1581709301.png" style="border:0px;margin-top:0px;" />
“pushState”還可以偽造瀏覽器記錄。
for(i=0; i<10; i++) history.pushState({},"", "/"+i+".html");
650) this.width=650;" src="http://images2015.cnblogs.com/blog/211606/201702/211606-20170204151119058-1932308250.png" style="border:0px;margin-top:0px;" />
2)HTML5下的殭屍網路
殭屍網路(Botnet)是指在大量的電腦中植入特定的惡意程式,使控制者能夠通過若干電腦直接向其他電腦發送指令,進行網路攻擊。
650) this.width=650;" src="http://images2015.cnblogs.com/blog/211606/201702/211606-20170204153034511-675768952.jpg" style="border:0px;margin-top:0px;" />
基於Web前端的殭屍網路可以用作DDOS攻擊,這裡涉及Web Worker技術和CORS處理機制,再通過Web蠕蟲擴散。
Web Worker是一種多線程機制,可以非同步執行惡意JS代碼,而不影響使用者在瀏覽器中的正常操作。
CORS處理機制工作在瀏覽器層面,如果伺服器不允許跨站,瀏覽器將攔截伺服器返回的結果,也就是說跨域請求,伺服器也會正常響應。
那麼就可以事先寫好一段非同步請求的指令碼(worker.js),然後通過Web Worker來執行這段指令碼,不斷的向目標伺服器發起請求。
650) this.width=650;" src="/img/fz.gif" alt="複製代碼" style="margin-top:10px;border:none;" />
var worker_loc = ‘worker.js‘;//封裝了ajax請求的指令碼var target = ‘http://news.qq.com/photo.shtml‘;//要攻擊的網址//可執行個體化多個Web Workervar workers = [];for (i = 0; i < 1; i++) { workers[i] = new Worker(worker_loc); workers[i].postMessage(target);//跨域訊息傳遞}
650) this.width=650;" src="/img/fz.gif" alt="複製代碼" style="margin-top:10px;border:none;" />
介面操作劫持與HTML5安全