• Web Security 15.10.2014

    Clickjacking Attack 偽裝的網頁

    ID-100130886

    這篇文章主要介紹一種特別的攻擊手法 clickJacking

    • 什麼是 ClickJacking?
    • 攻擊的技術手法
    • 網站防護的建議

     

    什麼是 ClickJacking

    ClickJacking 的主要目的是要達到讓受害者執行

    Authenticated actions BUT unintentional actions

    這是什麼狀況呢? 舉例來說,有兩張複寫紙,

    第一張是簽到表,複寫紙下面那張是貸款 1000 萬

    因此,駭客拿這兩張請您簽名,善意的受害者在不知情的狀況下,

    簽下第一張的簽到表,但是複寫紙的關係,也簽下第二張貸款

    因此,這個動作雖然是受害者親筆簽名授權的動作  Authenticated Actions

    但是卻不是受害者原本意圖() 想要達到的動作。

    這樣的攻擊手法運用到網站上就稱為  “ClickJacking”

    也就是受害者的輸入與點擊被綁架了!

     

    ClickJacking網頁示意圖

    例如下圖(source: OWASP)所示,Target Web 目標網站的特定欄位,”密碼輸入”,

    被重疊到另一個駭客網站 (Malicious Web Page),兩個網頁重疊的狀況下,

    使用者會不知覺的輸入密碼到駭客網站

    ClickJacking

     

    善意受害者,瀏覽駭客網站的時候,該駭客網站背後隱藏的是真實銀行的網站,

    因為使用者看到的駭客網站經過美化,

    使用者於不知情的狀況下,駭客網站輸入欄位為帳號密碼,

    而實際幫助駭客登入了銀行網站

    因此,駭客就會取得帳號密碼,並且可以進一步做其他的動作

     

    如何測試網站是否受到這樣的威脅?

    現在我們知道複寫紙 (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 的利用與威脅。

     

     

     

    Posted by Tony @ 11:48 am

    Tags: , , , ,

  • Leave a Reply

    Your email address will not be published.