[點晴永久免費OA][轉帖]計算機網絡知識----網絡安全----ClickJacking(點擊劫持)
當前位置:點晴教程→點晴OA辦公管理信息系統
→『 經驗分享&問題答疑 』
一、簡介點擊劫持是一種視覺上的欺騙手段。攻擊者使用一個透明的、不可見的iframe,覆蓋在一個網頁上,然后誘使用戶在該網頁上進行操作,此時用戶在不知情的情況下點擊透明的iframe頁面。通過調整iframe頁面的位置,可以誘使用戶恰好點擊在iframe頁面的一些功能性按鈕上。 雖然受害者點擊的是他所看到的網頁,但其實他所點擊的是被黑客精心構建的另一個置于原網頁上面的透明頁面 Clickjacking 是僅此于 XSS 和 CSRF 的前端漏洞,因為需要誘使用戶交互,攻擊成本高,所以不被重視,但危害不容小覷。 點擊劫持的步驟
二、劫持類型2.1 Flash點擊劫持攻擊者通過flash構造了點擊劫持,在完成一系列復雜的動作后,最終控制了用戶的攝像頭。 攻擊者制作了一個Flash游戲,這個游戲就是讓用戶去點擊“CLICK”按鈕,每次點擊后這個按鈕的位置都會發(fā)生變化。在Flash上面隱藏了一個看不見的iframe,游戲中某些點擊時是有意義的,有些點擊是無效的。 攻擊通過誘導用戶鼠標點擊就能完成較復雜的動作。最終通過這一步步操作,打開了用戶的攝像頭。 2.2 圖片覆蓋攻擊點擊劫持是一種視覺上的欺騙手段。那么圖片覆蓋也可以起到類似的作用。簡稱XSIO(Cross Site Image Overlaying) 原理: 利用的是圖片的style,或者能夠控制CSS。如果應用沒有限制style的position為absolute的話,圖片可以覆蓋到頁面上的任意位置。 <img style="position: absolute; left: 100px; top: 100px"> 用戶點擊圖片,就會鏈接到其他網站。 圖片還可以偽裝得像一個正常的鏈接、按鈕;或者在圖片中構造一些文字,覆蓋在關鍵的位置,就有可能完全改變頁面中想表達的意思。這種情況下,不需要用戶點擊,也能達到欺騙的目的。 由于img標簽在很多系統中是對用戶開放的,因此在現實生活中有非常多的站點存在在XSIO攻擊的可能。在防御XSIO時,需要檢查用戶提交的HTML代碼中,img標簽的style屬性是否可能導致浮出。 2.3 拖拽劫持與數據竊取目前,許多瀏覽器都開始支持Drag和drop的API。對于用戶來說,拖拽使他們的操作更加簡單。瀏覽器中的拖拽對象可以是一個鏈接,也可以是一段文字,還可以從一個窗口拖拽到另一個窗口,因此拖拽是不受同源策略限制的。 拖拽劫持的思路是誘使用戶從隱藏不可見iframe中拖拽出攻擊者希望得到的數據,然后放到攻擊者能控制的另外一個頁面,從而竊取數據。在Javascript的支持下,這個攻擊過程會變得非常隱蔽,因為它突破了傳統ClickJacking一些先天的局限,所以這種新型的拖拽劫持能夠造成更大的破壞。 國內安全研究者xisigr曾經構造了一個針對Gmail的POC,大致過程可參考POC攻擊過程 2.4 ClickJacking3.0:觸屏劫持智能手機的觸屏劫持攻擊被斯坦福的安全研究者公布,這意味著ClickJacking的攻擊方式更進一步,斯坦福安全研究者的將其稱為TapJacking。 從手機角度來看,觸屏實際上就是一個事件,手機捕捉這些事件,并執(zhí)行相應的動作。 常見的幾個事件: touchstart: 手指觸摸屏幕時發(fā)生 touchend: 手指離開屏幕時發(fā)生 touchmove: 手指滑動時發(fā)生 touchcancel: 系統可取消touch事件 將一個不可見的iframe覆蓋到當前網頁上,就可以劫持用戶的觸屏操作。 在未來,隨著移動設備中瀏覽器功能的豐富,我們會看到更多的TapJacking 三、防御3.1 防御ClickJacking3.1.1 frame busting通過可以寫一段Javascript代碼,以禁止iframe的嵌套。這種方法叫作frame busting。比如 if (top.location != location) { top.location = self.location; } 當然,還要很多很多frame busting的寫法,這里就不做贅述了。 缺點:js編寫的,防御效果不好,可繞過 3.1.2 X-Frame-Options使用HTTP頭:
DENY 拒絕當前頁面加載任何frame頁面 SAMEORIGIN frame頁面的地址只能為同源域名下的頁面 ALLOW-from origin 定義允許frame加載的頁面地址 例如:
配置 X-FRAME-OPTIONS:
除了 3.2 其他方式3.2.1 阻止頂級導航我們可以阻止因更改 beforeunload 事件處理程序中的 top.location 而引起的過渡(transition)。 頂級頁面(從屬于黑客)在 beforeunload 上設置了一個用于阻止的處理程序,像這樣: window.onbeforeunload = function() { return false; }; 當 在大多數情況下,訪問者會做出否定的回答,因為他們并不知道還有這么一個 3.2.2 顯示禁用的功能
因此,還有其他解決方案。例如,我們可以用一個樣式為 <style> #protector { height: 100%; width: 100%; position: absolute; left: 0; top: 0; z-index: 99999999; } </style> <div id="protector"> <a href="/" target="_blank">前往網站</a> </div> <script> // 如果頂級窗口來自其他源,這里則會出現一個 error // 但是在本例中沒有問題 if (top.document.domain == document.domain) { protector.remove(); } </script> 四、總結點擊劫持是一種“誘騙”用戶在不知情的情況下點擊惡意網站的方式。如果是重要的點擊操作,這是非常危險的。 黑客可以通過信息發(fā)布指向他的惡意頁面的鏈接,或者通過某些手段引誘訪問者訪問他的頁面。當然還有很多其他變體。 一方面 —— 這種攻擊方式是“淺層”的:黑客所做的只是攔截一次點擊。但另一方面,如果黑客知道在點擊之后將出現另一個控件,則他們可能還會使用狡猾的消息來迫使用戶也點擊它們。 這種攻擊相當危險,因為在設計交互界面時,我們通常不會考慮到可能會有黑客代表用戶點擊界面。所以,在許多意想不到的地方可能發(fā)現攻擊漏洞。
------------------- https://juejin.cn/post/7180241763834003516 該文章在 2023/5/17 16:29:41 編輯過 |
關鍵字查詢
相關文章
正在查詢... |