點擊劫持 (Clickjacking) 技術又稱為界面偽裝攻擊 (UI redress attack ),是一種視覺上的欺騙手段。通常有兩種方式:
點擊劫持發生時,用戶的操作已經被劫持到攻擊者事先設計好的惡意按鈕或鏈接上。攻擊者既可以通過點擊劫持設計一個獨立的惡意網站,執行釣魚攻擊等;也可以與 XSS 和 CSRF 攻擊相結合,突破傳統的防御措施,提升漏洞的危害程度。
攻擊者在點擊劫持漏洞利用實現過程中使用 iframe 作為目標網頁載體。iframe 是 HTML 標準中的一個標簽,可以創建包含另外一個頁面的內聯框架,在點擊劫持漏洞利用中主要用來載入目標網頁。點擊劫持典型的攻擊原理如下圖所示:
攻擊者實施攻擊的一般步驟是:
比較重要的點擊劫持漏洞利用技術包括目標網頁隱藏、點擊操作劫持、拖拽技術。
目標網頁隱藏技術原理是攻擊者在惡意網站上通過 iframe 載入目標網頁,然并隱藏目標網頁,欺騙用戶點擊隱藏的惡意鏈接。目前主要的網頁隱藏技術有兩種:CSS隱藏技術和雙iframe隱藏技術。
在成功隱藏目標網頁后,攻擊者下一個目標是欺騙用戶點擊特定的按鈕。
主流的瀏覽器都有drag-and-drop API 接口,供網站開發人員創建交互式網頁。但是,這些 API 接口在設計時沒有考慮很多的安全性問題,導致通過拖拽就可以實現跨域操作。
服務器端防御點擊劫持漏洞的思想是結合瀏覽器的安全機制進行防御,主要的防御方法介紹如下。
1、X-FRAME-OPTIONS 機制
在微軟發布新一代的瀏覽器 Internet Explorer 8.0中首次提出全新的安全機制:
X-FRAME-OPTIONS。該機制有兩個選項:DENY 和 SAMEORIGIN。DENY 表示任何網頁都不能使用 iframe 載入該網頁,SAMEORIGIN 表示符合同源策略的網頁可以使用 iframe 載入該網頁。
除了 Chrome 和 safari 以外,還支持第三個參數 Allow-From(白名單限制)。如果瀏覽器使用了這個安全機制,在網站發現可疑行為時,會提示用戶正在瀏覽 網頁存在安全隱患,并建議用戶在新窗口中打開。這樣攻擊者就無法通過 iframe 隱藏目標的網頁。
2、使用 FrameBusting 代碼
點擊劫持攻擊需要首先將目標網站載入到惡意網站中,使用 iframe 載入網頁是最有效的方法。Web 安全研究人員針對 iframe 特性提出 Frame Busting 代碼,使用 JavaScript 腳本阻止惡意網站載入網頁。如果檢測到網頁被非法網頁載入,就執行自動跳轉功能。Frame Busting 代碼是一種有效防御網站被攻擊者惡意載入的方法,網站開發人員使用 Frame Busting 代碼阻止頁面被非法載入。需要指出的情況是,如果用戶瀏覽器禁用 JavaScript 腳本,那么 FrameBusting 代碼也無法正常運行。所以,該類代碼只能提供部分保障功能。
3、使用認證碼認證用戶
點擊劫持漏洞通過偽造網站界面進行攻擊,網站開發人員可以通過認證碼識別用戶,確定是用戶發出的點擊命令才執行相應操作。識別用戶的方法中最有效的方法是認證碼認證。例如,在網站上廣泛存在的發帖認證碼,要求用戶輸入圖形中的字符,輸入某些圖形的特征等。
由于點擊劫持攻擊的代碼在客戶端執行,因此客戶端有很多機制可以防御此漏洞。
1、升級瀏覽器
最新版本的瀏覽器提供很多防御點擊劫持漏洞的安全機制,對于普通的互聯網用戶,經常更新修復瀏覽器的安全漏洞,能夠最有效的防止惡意攻擊。
2、NoScript 擴展
對于 Firefox 的用戶,使用 NoScript 擴展能夠在一定程度上檢測和阻止點擊劫持攻擊。利用 NoScript 中 ClearClick 組件能夠檢測和警告潛在的點擊劫持攻擊,自動檢測頁面中可能不安全的頁面。
上一篇:「網絡安全」常見攻擊篇(19)——MAC Flood攻擊
下一篇:「網絡安全」常見攻擊篇(21)——路由協議攻擊
期小編給大家分享有些實戰很有必要的防范小常識,事情雖然比較小,但是往往被大家所忽視的問題,并分享給大家.
今天主要給大家聊聊網絡劫持的那些事兒,網絡劫持,搞網絡安全的童鞋應該不陌生了,但前端的小伙伴就可要當心了哦!
大家常見的可能都是些專業級別的操作,如:運營商劫持,DNS劫持,HTTP劫持等,今天主要還是給大家講一下前端劫持,點擊劫持,很多童鞋對這個專業名詞可能比較陌生,但實際中最常見.
我們先看一下概念吧,在百度上對于點擊劫持有這么一段話來描述:”點擊劫持被稱為Clickjacking的安全威脅,原本要在OWASPNYCAppSec2008大會上公布,但包括Adobe在內的廠商請求暫時不要公開這個漏洞,直到他們開發出安全補丁。
發現這個漏洞的是兩個安全研究專家,Robert Hansen 與 Jeremiah Grossman,他們已經略透露了一點相關信息以顯示該安全威脅的嚴重性。”
簡而言之,點擊劫持,只是一種從視覺上欺騙使用者的手段,大致分為兩種方式.
方式一: 使用透明的iframe來覆蓋網頁,讓用戶操作
方式二: 使用圖像來偽裝
簡單的示例如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
html,body,iframe{
display: block;
position:absolute;
width: 100%;
height: 100%;
margin: 0;
padding:0;
left:0;
right:0;
top:0;
bottom:0;
}
iframe{
opacity:20;
filter:alpha(opacity=20); /* IE */
-moz-opacity:0.2; /* Moz + FF */
opacity: 0.2; /* 支持CSS3的瀏覽器(FF 1.5也支持)*/
position:absolute;
z-index:2;
}
button{
position: absolute;
left:50%;
top:50%;
z-index: 1;
}
</style>
</head>
<body>
這是一個美女,大家先到先得!
<button>點擊查看詳情</button>
<iframe src="http://www.baidu.com" frameborder="0"></iframe>
</body>
</html>
原版效果如下圖:
以下為特定場景中的iframe框架效果,當前也可以使用其它標簽來實現功能,想一想如果我再把圖中的透明度設置為0,很多非法操作,是不是就很可能實現呢!?真是想一想都后怕.
總結: 當然以上內容本質上還只是一些大家沒有太注意到的UI層覆蓋問題,只是實現的手段不一樣而己,類似的東西還有以下操作:
Flash點擊劫持,操作本機攝像頭等
圖片覆蓋攻擊(XSIO)
拖拽劫持,主要是用于數據竊取
觸屏劫持(TapJacking)
以上方式給上網用戶帶來了很多安全隱患,導致個人隱私泄露,各種帳號丟失,甚至還可以導致轉帳問題,當然這些問題,也有對應的解決方案
防御方案:
X-FRAME-OPTIONS是目前最可靠的方法。X-FRAME-OPTIONS是微軟提出的一個http頭,專門用來防御利用iframe嵌套的點擊劫持×××。并且在IE8、Firefox3.6、Chrome4以上的版本均能很好的支持。
這個頭有三個值:
DENY // 拒絕任何域加載
SAMEORIGIN / / 允許同源域下加載
ALLOW-FROM // 可以定義允許frame加載的頁面地址
PHP代碼:
header('X-Frame-Options:Deny');
header('X-Frame-Options:SAMEORIGIN);
配置 Apache
配置 Apache 在所有頁面上發送 X-Frame-Options 響應頭,需要把下面這行添加到 'site' 的配置中:
Header always append X-Frame-Options SAMEORIGIN
配置 nginx
配置 nginx 發送 X-Frame-Options 響應頭,把下面這行添加到 'http', 'server' 或者 'location' 的配置中:
add_header X-Frame-Options SAMEORIGIN;
配置 IIS
配置 IIS 發送 X-Frame-Options 響應頭,添加下面的配置到 Web.config 文件中:
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="SAMEORIGIN" />
</customHeaders>
</httpProtocol>
</system.webServer>
以上為本期與大家分享的點擊劫持內容,下期還會給大家分享更多《前端網絡安全》干貨,請關注我哦!
、HTTP劫持是什么
HTTP劫持(HTTP hijacking)是一種網絡攻擊技術,攻擊者通過各種手段截取用戶的HTTP請求或響應,篡改其內容或重定向到惡意服務器,從而實施惡意活動。這種攻擊可能導致用戶信息泄露、身份盜竊、篡改網頁內容或植入惡意代碼等安全問題。
二、HTTP劫持原理
在用戶的瀏覽器連上被訪問的網站服務器,發送了HTTP請求后,運營商的路由器會首先收到此次HTTP請求,之后運營商路由器的旁路設備標記此TCP連接為HTTP協議,之后可以搶在網站服務器返回數據之前發送HTTP協議的302代碼進行下載軟件的劫持,瀏覽器收到302代碼后就會跳轉到錯誤的軟件下載地址下載軟件了,隨后網站服務器的真正數據到達后反而會被丟棄。或者,旁路設備在標記此TCP連接為HTTP協議后,直接返回修改后的HTML代碼,導致瀏覽器中被插入了運營商的廣告,隨后網站服務器的真正數據到達后最終也是被丟棄。
三、HTTP被劫持了怎么辦
如果確認遭遇了HTTP劫持,可以向ISP(互聯網服務提供商,即向廣大用戶綜合提供互聯網接入業務、信息業務、和增值業務的電信運營商Internet Server Provider的英文縮寫)客服強烈投訴,來達到免于被劫持的目的。先通過進入IIS7網站監控來進行檢測,看看自己的網站是不是真的遇到了劫持,也許只是污染的問題,通過這個先查出來結果再看具體原因。因為劫持技術本身設計中包括類似黑名單的功能,如果收到寬帶用戶的強烈反對,ISP會將該用戶放入"黑名單"過濾掉,于是用戶在短期內就不會遇到劫持的情況了。
HTTPS的出現對利用網絡劫持的企業來說,無疑是一個巨大的打擊。HTTPS的出現,通過對數據的加密,使得第三方難以修改我們的數據內容。就像字條上的文字只有甲方跟丙方能夠看懂,作為乙方根本不知道紙條上寫的是什么內容,就不從下手對內容進行修改。同時,給字條加上信封,再加上一次性的印戳,使得乙方根本無法看到字條上的內容,因為一旦拆開信封,丙方就知道自己的信息被第三方看到了,從而對紙條內容產生懷疑。SSL證書就像信封,把我們的數據放在里面,只有指定的一方可以解讀這個數據,一旦數據被第三方劫持,接受數據的用戶就會產生不信任,從而丟棄數據。
1、使用HTTPS協議:采用HTTPS協議可以通過加密通信和數字證書驗證來確保數據傳輸的安全性和完整性。HTTPS使用TLS/SSL加密協議,可以防止攻擊者竊聽、篡改和劫持HTTP通信。
2、定期更新和維護軟件:保持網站服務器和相關軟件的更新是防止被劫持的重要步驟。定期升級操作系統、Web服務器、數據庫和其他組件,以修復已知漏洞并增強安全性。
3、強化訪問控制:確保使用強密碼,并實施多因素身份驗證來保護網站后臺管理系統。限制登錄嘗試次數、啟用賬號鎖定功能和登錄日志記錄等措施可以有效減少暴力破解和密碼攻擊。
4、防止DNS劫持:選擇可靠的DNS服務提供商,并確保使用DNSSEC(Domain Name System Security Extensions)來驗證DNS解析的完整性。DNSSEC提供數字簽名和驗證機制,防止DNS查詢被篡改或重定向。
5、使用Web應用防火墻(WAF):WAF可以監測和阻止惡意請求和攻擊,提供對常見攻擊的防護,如SQL注入、跨站腳本攻擊(XSS)、跨站請求偽造(CSRF)等。配置WAF規則以過濾和阻止潛在的惡意流量。
6、定期監控網站流量和日志:通過監控網站訪問日志和流量模式,可以及時發現異常活動和潛在攻擊。檢查訪問來源、請求類型、異常響應和錯誤日志等信息,以便快速識別和應對安全事件。
7、實施安全編程實踐:在開發和部署網站時,遵循安全編程實踐,對用戶輸入進行有效的驗證和過濾,防止常見的安全漏洞,如XSS和SQL注入攻擊。使用安全的編程語言和框架,編寫健壯的代碼,最小化安全漏洞的出現。
8、定期備份網站數據:定期備份網站數據是一種重要的防護措施。在遭受攻擊或數據丟失時,可以快速恢復網站運行并減少數據損失。
9、增強網絡安全意識:教育網站管理員和用戶有關網絡安全的最佳實踐,如識別和避免釣魚網站、不點擊可疑鏈接、不下載未經驗證的附件等。提高網絡安全意識可以幫助減少被劫持的風險。
10、總結:總結起來,防止網站被HTTP劫持需要綜合使用多種安全措施,包括使用HTTPS協議、定期更新和維護軟件、強化訪問控制、防止DNS劫持、使用WAF、監控網站流量和日志、實施安全編程實踐、定期備份數據和增強網絡安全意識。通過采取這些措施,可以提高網站的安全性,減少被劫持的風險。然而,由于網絡安全威脅的不斷演變,建議網站管理員保持關注最新的安全漏洞和攻擊技術,并及時采取相應的防護措施。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。