什麼是CSRF漏洞?
跨站請求僞造,就是黑客以被攻擊者的名義發送請求,完全合規合法。
CSRF原理
A站點存在CSRF漏洞、B站點爲黑客僞造包含A站點正常請求鏈接的站點。
1)當被攻擊者打開A站點,進行身份驗證,登陸成功。A站點服務端返回給被攻擊者的瀏覽器身份驗證Cookie。被攻擊者可以在A站點正常發送請求。
2)黑客僞造一個B站點其中包含A站點的某一請求(如轉賬請求)/廣告圖片包含A站點的請求。
3)黑客將B站點發送給被攻擊者,被攻擊者用打開A站點的瀏覽器打開B站點並觸發黑客僞造的A站點請求。
4)這樣就在被攻擊者不知道的情況下,自己發送了請求,完全合法。
實戰環境
存在CSRF應用
系統:Ubuntu 16.04
應用:DVWA
IP:192.168.1.5
目標用戶
系統:mac OS系統
瀏覽器 :Google Chrome
IP:192.168.1.4
攻擊者服務器(黑客)
系統:kali linux 2020.2
IP:192.168.1.10
環境:搭建Apache
實戰測試
使用burpsuite抓包密碼修改功能,發現密碼修改鏈接和參數如下圖。
http://192.168.1.5/dvwa/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change
攻擊者在自己服務器搭建一個包含修改Ubuntu網站用戶密碼的鏈接或通過郵件發送給被攻擊者。
以郵件發送觸發鏈接爲例(黑客自己搭建服務器一樣的原理就是誘使用戶在不知情的情況下點擊修改密碼鏈接)
發送帶修改密碼鏈接請求的郵件,真正的黑客郵件做的肯定是用戶比較感興趣的我測試用簡單演示就行了。
用戶在正常登陸完成DVWA用戶認證,且沒有退出,點擊郵件鏈接。
點擊密碼被修改成功
這樣黑客知道你的用戶名就 可以直接登陸你的賬戶了(當然並不是修改密碼這麼簡單也可能存在轉移你的資產等情況)。
怎麼防禦
1)驗證 HTTP Referer 字段;
2)在請求地址中添加 token 並驗證;
3)在HTTP 頭中自定義屬性並驗證。