一、csrf攻擊
什么是CSRF
CSRF(Cross-Site Request Forgery),也被稱為 one-click attack 或者 session riding,即跨站請求偽造攻擊。
那么 CSRF 到底能夠干嘛呢?CSRF是一種挾制用戶在當前已登錄的Web應用程序上執行非本意的操作的攻擊方法。可以簡單的理解為:攻擊者可以盜用你的登陸信息,以你的身份模擬發送各種請求對服務器來說這個請求是完全合法的,但是卻完成了攻擊者所期望的一個操作,比如以你的名義發送郵件、發消息,盜取你的賬號,添加系統管理員,甚至于購買商品、虛擬貨幣轉賬等。攻擊者只要借助少許的社會工程學的詭計,例如通過 QQ 等聊天軟件發送的鏈接(有些還偽裝成短域名,用戶無法分辨),攻擊者就能迫使 Web 應用的用戶去執行攻擊者預設的操作。
所以遇到 CSRF 攻擊時,將對終端用戶的數據和操作指令構成嚴重的威脅。當受攻擊的終端用戶具有管理員帳戶的時候,CSRF 攻擊將危及整個 Web 應用程序。
CSRF原理
1、用戶C打開瀏覽器,訪問受信任網站A,輸入用戶名和密碼請求登錄網站A;
2、在用戶信息通過驗證后,網站A產生Cookie信息并返回給瀏覽器,此時用戶登錄網站A成功,可以正常發送請求到網站A;
3、用戶未退出網站A之前,在同一瀏覽器中,打開一個TAB頁訪問網站B;
4、網站B接收到用戶請求后,返回一些攻擊性代碼,并發出一個請求要求訪問第三方站點A;
5、瀏覽器在接收到這些攻擊性代碼后,根據網站B的請求,在用戶不知情的情況下攜帶Cookie信息,向網站A發出請求。網站A并不知道該請求其實是由B發起的,所以會根據用戶C的Cookie信息以C的權限處理該請求,導致來自網站B的惡意代碼被執行。
CSRF 攻擊的三個條件 :
1. 用戶已經登錄了站點 A,并在本地記錄了 cookie
2. 在用戶沒有登出站點 A 的情況下(也就是 cookie 生效的情況下),訪問了惡意攻擊者提供的引誘危險站點 B (B 站點要求訪問站點A)。
3. 站點 A 沒有做任何 CSRF 防御
延伸閱讀:
二、CSRF漏洞檢測
檢測CSRF漏洞最簡單的方法就是抓取一個正常請求的數據包,去掉Referer字段后再重新提交,如果該提交還有效,那么基本上可以確定存在CSRF漏洞。
隨著對CSRF漏洞研究的不斷深入,不斷涌現出一些專門針對CSRF漏洞進行檢測的工具,如CSRFTester,CSRF Request Builder等。
以CSRFTester工具為例,CSRF漏洞檢測工具的測試原理如下:使用CSRFTester進行測試時,首先需要抓取我們在瀏覽器中訪問過的所有鏈接以及所有的表單等信息,然后通過在CSRFTester中修改相應的表單等信息,重新提交,這相當于一次偽造客戶端請求。如果修改后的測試請求成功被網站服務器接受,則說明存在CSRF漏洞,當然此款工具也可以被用來進行CSRF攻擊。