Clickjacking Attack 偽裝的網頁
這篇文章主要介紹一種特別的攻擊手法 clickJacking
- 什麼是 ClickJacking?
- 攻擊的技術手法
- 網站防護的建議
什麼是 ClickJacking
ClickJacking 的主要目的是要達到讓受害者執行
Authenticated actions BUT unintentional actions
這是什麼狀況呢? 舉例來說,有兩張複寫紙,
第一張是簽到表,複寫紙下面那張是貸款 1000 萬
因此,駭客拿這兩張請您簽名,善意的受害者在不知情的狀況下,
簽下第一張的簽到表,但是複寫紙的關係,也簽下第二張貸款
因此,這個動作雖然是受害者親筆簽名授權的動作 Authenticated Actions
但是卻不是受害者原本意圖() 想要達到的動作。
這樣的攻擊手法運用到網站上就稱為 “ClickJacking”
也就是受害者的輸入與點擊被綁架了!
ClickJacking網頁示意圖
例如下圖(source: OWASP)所示,Target Web 目標網站的特定欄位,”密碼輸入”,
被重疊到另一個駭客網站 (Malicious Web Page),兩個網頁重疊的狀況下,
使用者會不知覺的輸入密碼到駭客網站
善意受害者,瀏覽駭客網站的時候,該駭客網站背後隱藏的是真實銀行的網站,
因為使用者看到的駭客網站經過美化,
使用者於不知情的狀況下,駭客網站輸入欄位為帳號密碼,
而實際幫助駭客登入了銀行網站
因此,駭客就會取得帳號密碼,並且可以進一步做其他的動作
如何測試網站是否受到這樣的威脅?
現在我們知道複寫紙 (ClickJacking)的威脅也類似在網站上發生
那麼我們要如何測試自己的網站是否會被駭客拿來這樣的攻擊呢?
最簡單的方式是看看自己的網站是否可以容易地被用 iFrame 來顯示部分內容.
例如:程式碼如下,修改需要測試的網站網址,建立下列的 HTML並且用瀏覽器執行,
如果該目標網站可以透過 iframe 的方式顯示部分內容(這裡的例子設定長 500寬500),
那麼該網站就會受到駭客被利用來做 ClickJacking 的風險。
<html>
<title>Clickjack PoC page</title>
<body>
<p>If you can see partial website contents in the box below, the Website is vulnerable to clickjacking!</p>
<iframe src=”http://TestingSiteURL.com” width=”500”
height=”500”></iframe></body>
</html>
如何預防 ClickJacking
技術上預防 ClickJacking 有兩種方法,
1. Client 端的檢查
2. Web Server 端的設定
Client 端的防護
多半 Client 端的防護僅能做到防君子難防小人
- window.confirm() 利用 pop 的確認視窗跟使用者確認所執行的動作,因為確認視窗沒有辦法被 clickJacking 隱藏。
- 設定 security=”restricted”,例如
- <iframe src=”http://www.victim.com” security=”restricted”></iframe>
這樣的缺點是,當Browser Javascript 設定被 disable 的時候,該保護就會失去作用。 - 設定 Top.location
if(top.location != self.location) { top.location = self.location; } 這樣的缺點是駭客可以指定變數 location 的方式讓這段程式保護失效。<script> var location = "Hack"; </script> <iframe src="http://www.victimSite.com"> </iframe>
Web Server 端的防護
因為 client 端的防護方法,多半會被駭客 workaround ,
所以比較建議的會是在 Web Server做設定 " X-Frame-Options”的 headers設定
最大的缺點是,太舊的瀏覽器並不支援這樣的設定
因此,如果有使用者用很舊版的瀏覽器,也會受到這樣的攻擊
X-Frame-Options的設定有三個值
- DENY:完全禁止 iframe
- SAMEORIGIN:只允許目前網站的 iFrame
- ALLOW-FROM uri: 限定特定 URL,但是這個選項,由於2012才新增,會有更多瀏覽器不支援的問題。
X-Frame-Options最低支援的瀏覽器版本 (Source: RFC 7034)
http://datatracker.ietf.org/doc/draft-ietf-websec-x-frame-options/
Browser | DENY/SAMEORIGIN Support Introduced | ALLOW-FROM Support Introduced |
---|---|---|
Chrome | 4.1.249.1042 | Not supported/Bug reported |
Firefox (Gecko) | 3.6.9 (1.9.2.9) | 18.0 |
Internet Explorer | 8.0 | 9.0 |
Opera | 10.50 | |
Safari | 4.0 | Not supported/Bug reported |
總結
這篇文章我們說明 ClickJacking 主要透過網頁重疊的方式,
就像複寫紙的原理一樣,讓使用者在不知情的狀況下,
執行或是簽屬一個複寫紙(網站)背後他不知情的文件(網頁動作)
如何測試網站是否有這樣的風險?
這篇文章提供一些簡單的 HTML sample code 可以用 iFrame來做基本的驗證
對於網站安全防護來說,要避免網站被駭客這樣的使用,
可以從 client端的程式碼或是 Web Server 著手
因為 client 端的幾種不同的防護方法,都有可能會被駭客用其他方式規避
如果支援的瀏覽器版本允許的情況下,建議從 Web Server 設定 X-Frame-Options
讓網站不受到 ClickJacking 的利用與威脅。