1.跨站點請求偽造(CSRF)
1.1 簡介
CSRF攻擊的全稱是跨站請求偽造( cross site request forgery ):
是一種對網站的惡意利用,盡管聽起來跟XSS跨站腳本攻擊有點相似,但事 實上CSRF與XSS差別很大,XSS利用的是站點內的信任用戶,而CSRF則是通過 偽裝來自受信任用戶的請求來利用受信任的網站。
簡單理解:一種可以被攻擊者用來通過用戶瀏覽器冒充用戶身份向服務器發送 偽造請求並被目標服務器成功執行的漏洞被稱之為CSRF漏洞。
特點:
用戶瀏覽器:表示的受信任的用戶
冒充身份:惡意程序冒充受信任用戶(瀏覽器)身份
偽造請求:借助於受信任用戶瀏覽器發起的訪問
1.2 CSRF攻擊原理
1.3 漏洞危害分析
CSRF攻擊特點:
-
攻擊時機:網站的cookie在瀏覽器中沒有過期,不關閉瀏覽器或者退出登錄
-
攻擊前提:對目標網站接口有一定了解
-
攻擊難度:攻擊難度高於XSS
與XSS攻擊相比,CSRF攻擊往往不大流行(因此對其進行防范的資源也相當 稀少)和難以防范,所以被認為比XSS更具危險性。
危害: 修改密碼、網銀轉賬 ......
1.4 安全防護
- 區分是否為偽造請求
- 二次驗證
referer校驗:
HTTP Referer是header的一部分,當瀏覽器向web服務器發送請求的時候,一 般會帶上Referer,告訴服務器該網頁是從哪個頁面鏈接過來的,服務器因此可 以獲得一些信息用於處理。
業務二次校驗:
- 修改密碼,需輸入原密碼
- 交易系統設置交易密碼
- 增加圖形驗證碼校驗
- 網銀轉賬短信驗證碼
2、點擊劫持
2.1 攻擊原理
點擊劫持(Click Jacking),也被稱為UI覆蓋攻擊。
1、黑客創建一個網頁利用iframe包含目標網站;隱藏目標中的網站,是用戶無法察覺到目標網站的存在;
誘使用戶點擊圖中特定的按鈕。特定的按鈕為位置和原網頁中關鍵按鈕位置一致
2 、用戶在不知情的情況下點擊按鈕,被引誘執行了危險操作
2.2 攻擊方式
兩種方式:
-
一是攻擊者使用一個透明的iframe,覆蓋在一個網頁上,然后誘使用戶在該 頁面上進行操作,此時用戶將在不知情的情況下點擊透明的iframe頁面;
-
二是攻擊者使用一張圖片覆蓋在網頁,遮擋網頁原有位置的含義
2.3 解決辦法
使用一個HTTP頭——X-Frame-Options。X-Frame-Options可以說是為了解決 ClickJacking而生的,它有三個可選的值:
- DENY:瀏覽器會拒絕當前頁面加載任何frame頁面;
- SAMEORIGIN :frame頁面的地址只能為同源域名下的頁面;
- ALLOW-FROM origin:允許frame加載的頁面地址;
nginx配置:
add_header X-Frame-Options SAMEORIGIN;
3、圖片覆蓋攻擊與防護
圖片覆蓋攻擊(Cross Site Image Overlaying),攻擊者使用一張或多張圖 片,利用圖片的style或者能夠控制的CSS,將圖片覆蓋在網頁上,形成點擊劫 持。當然圖片本身所帶的信息可能就帶有欺騙的含義,這樣不需要用戶點擊, 也能達到欺騙的目的。
防護
在防御圖片覆蓋攻擊時,需要檢查用戶提交的HTML代碼中,img標簽的style屬 性是否可能導致浮出。
4、URL跳轉漏洞
URL跳轉漏洞(URL重定向漏洞),跳轉漏洞一般用於釣魚攻擊。
https://link.zhihu.com/?target=https://www.baidu.com/
4.1 原理:
URL跳轉漏洞本質上是利用Web應用中帶有重定向功能的業務,將用戶從一 個網站重定向到另一個網站。其最簡單的利用方式為誘導用戶訪問http://www. aaa.com?returnUrl=http://www.evil.com,借助www.aaa.com讓用戶訪問wwww.evil.com,這種漏洞被利用了對用戶和公司都是一種損失。
4.2 防護方案
限制referer、添加token,這樣可以避免惡意用戶構造跳轉鏈接到處散播,修復該漏洞最根本的方法還是上述的嚴格檢查跳轉域名。
- 代碼固定跳轉地址,不讓用戶控制變量
- 跳轉目標地址采用白名單映射機制 比如1代表www.goole.cn,2代表www.baidu.com,其它記錄日志
- 合理充分的校驗機制,校驗跳轉的目標地址,非己方地址時告知用戶跳轉風x險
5、Session攻擊
5.1 會話(Session)劫持
會話劫持(Session hijacking)就是一種通過竊取用戶SessionID后,使用該 SessionID登錄進目標賬戶的攻擊方法,此時攻擊者實際上是使用了目標賬戶的 有效Session。如果SessionID是保存在Cookie中的,則這種攻擊可以稱為 Cookie劫持。
5.2 會話固定(Session fixation)
會話固定(Session fixation)是一種誘騙受害者使用攻擊者指定的會話標識 (SessionID)的攻擊手段。這是攻擊者獲取合法會話標識的最簡單的方法。讓 合法用戶使用黑客預先設置的sessionID進行登錄,從而是Web不再進行生成新 的sessionID,從而導致黑客設置的sessionId變成了合法橋梁。
5.3 Session保持攻擊
一般來說,Session是有生命周期的,當用戶長時間未活動后,或者用戶點擊退 出后,服務器將銷毀Session。Session如果一直未能失效,會導致什么問題 呢?前面的章節提到session劫持攻擊,是攻擊者竊取了用戶的SessionID,從 而能夠登錄進用戶的賬戶
但如果攻擊者能一直持有一個有效的Session(比如間隔性地刷新頁面’以告訴服 務器這個用戶仍然在活動),而服務器對於活動的Session也一直不銷毀的話, 攻擊者就能通過此有效Session—直使用用戶的賬戶,成為一個永久的‘后門