關於X-Franme-Options的clickjacking網站點劫持攻擊。。。

CSRF(Cross-site request forgery 跨站請求僞造,也被稱成爲“one click attack”或者session riding,通常縮寫爲CSRF或者XSRF,是一種對網站的惡意利用。儘管聽起來像跨站腳本(XSS),但它與XSS非常不同,並且攻擊方式幾乎相左。XSS利用站點內的信任用戶,而CSRF則通過僞裝來自受信任用戶的請求來利用受信任的網站。與XSS攻擊相比,CSRF攻擊往往不大流行(因此對其進行防範的資源也相當稀少)和難以防範,所以被認爲比XSS更具危險性。

攻擊通過在授權用戶訪問的頁面中包含鏈接或者腳本的 方式工作。例如:一個網站用戶Bob可能正在瀏覽聊天論壇,而同時另一個用戶Alice也在此論壇中,並且後者剛剛發佈了一個具有Bob銀行鏈接的圖片消 息。設想一下,Alice編寫了一個在Bob的銀行站點上進行取款的form提交的鏈接,並將此鏈接作爲圖片tag。如果Bob的銀行在cookie中保 存他的授權信息,並且此cookie沒有過期,那麼當Bob的瀏覽器嘗試裝載圖片時將提交這個取款form和他的cookie,這樣在沒經Bob同意的情況下便授權了這次事務。

CSRF是一種依賴web瀏覽器的、被混淆過的代理人攻擊(deputy attack)。在上面銀行示例中的代理人是Bob的web瀏覽器,它被混淆後誤將Bob的授權直接交給了Alice使用。

下面是CSRF的常見特性:

依靠用戶標識危害網站
利用網站對用戶標識的信任
欺騙用戶的瀏覽器發送HTTP請求給目標站點
另外可以通過IMG標籤會觸發一個GET請求,可以利用它來實現CSRF攻擊。
風險在於那些通過基於受信任的輸入form和對特定行爲無需授權的已認證的用戶來執行某些行爲的web應用。已經通過被保存在用戶瀏覽器中的cookie進行認證的用戶將在完全無知的情況下發送HTTP請求到那個信任他的站點,進而進行用戶不願做的行爲。

使用圖片的CSRF攻擊常常出現在網絡論壇中,因爲那裏允許用戶發佈圖片而不能使用JavaScript。

X-Frame-Options HTTP 響應頭是用來給瀏覽器指示允許一個頁面可否在 <frame>, <iframe> 或者 <object> 中展現的標記。網站可以使用此功能,來確保自己網站的內容沒有被嵌到別人的網站中去,也從而避免了點擊劫持 (clickjacking) 的攻擊。
X-Frame-Options 有三個值:
DENY:表示該頁面不允許在 frame 中展示,即便是在相同域名的頁面中嵌套也不允許。
SAMEORIGIN:表示該頁面可以在相同域名頁面的 frame 中展示。
ALLOW-FROM uri:表示該頁面可以在指定來源的 frame 中展示。
換一句話說,如果設置爲 DENY,不光在別人的網站 frame 嵌入時會無法加載,在同域名頁面中同樣會無法加載。另一方面,如果設置爲 SAMEORIGIN,那麼頁面就可以在同域名頁面的 frame 中嵌套。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

今天早上收到一封郵件,是一個官方網站使用者反饋的high level bug,讀了一下是關於X-Frame-Options的網站點擊劫持攻擊。

說明如下:

讀完後,我按着他的攻擊方式測試了京東,天貓,淘寶。。。多個網站進行了測試,網站都是允許我嵌套<iframe></iframe>使用的。

<html><head>
<title> CSRF testing </title>
<style>
 
frame {
opacity: 0.5;
border: none;
position: absolute;
top: 0px;
left: 0px;
z-index: 1000;
}
 
</style>
</head>
<body>
<script>
window.onbeforeunload = function()
{
return " Do you want to leave ?";
}
</script>
 
<p> site is vulnerable for CSRF!</p>
<iframe id="frame" width="100%" height="100%" src="https://world.taobao.com/"></iframe>
</body>
 
</html>

於是我就明白爲什麼在一些網站總是可以看到電商的廣告了

1、基於網站DAU/MAU,引用知名度高的網站提高自己網站的點擊量。

2、在高誘惑區域設置點擊事件,誘導用戶訪問目標方法。

3、能否藉助用戶登陸的session信息進行個人訪問?

但是,爲什麼這些網站沒有設置X-Frame-Options呢?

當然不會呀,免費提高DAU/MAU的事情爲什麼要拒絕,哈哈哈哈哈哈😂

其實還是因爲他們做足了預防點擊劫持事件的Bug。如果只是引用頁面增加曝光倒俄安全無所謂了。

解決辦法:

app.use( async (ctx, next) => {
    ctx.set('X-Frame-Options', 'DENY');
    await next();
} )


原理就是在響應頭裏添加X-Frame-Options字段。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章