CSRF漏洞( Cross-site request forgery )!!!
同XSS一樣,但很多時候很多人經常把XSS與CSRF漏洞混淆,他們之間有着本質的不同,就從信任的角度來區分:
XSS:利用用戶對站點的信任
CSRF:利用站點對已經身份認證的信任
實際上CSRF漏洞主要結合社會工程發起攻擊。
漏洞利用條件:
1、被害用戶已經完成身份認證
2、新請求的提交不需要重新身份認證或確認機制
3、攻擊者必須瞭解Web APP請求的參數構造
4、誘使用戶觸發攻擊的指令(社工)
需要至少以上的條件,纔可能說存在CSRF漏洞。
下面詳解介紹CSRF漏洞的主要利用過程:
工具:DVWA靶機、Kali、Burp suite。
#兩種方法:Post / Get
首先:
準備好環境,將主機用於客戶端當作普通用戶,在Kali上作爲攻擊者和服務器架設,並在靶機爲low與medium狀態下進行操作。
初始登陸密碼爲:password,並調製low狀態。
其次:
在kali上開啓apache服務配備好服務器,同時在kali上使用同樣賬號密碼登陸上dvwa(用作burp的抓包處理),並將dwva設置爲low模式,打開burp進行截斷代理,緊接着在CSRF選項中進行更改密碼(改爲123),成功截斷後將內容drop掉,不讓其在kali上將密碼更改,接下來將我們截取到的數據取部分值配置爲(http://1.1.1.1/dwva.....)一個2.html頁面,將這個頁面放入kali中的apache服務下的/var/www/html文件,後面就需要用社會工程學向客戶端普通用戶發送含有2.html這個鏈接,等待客戶端普通用戶點擊,一旦點擊,那麼密碼將被成功修改,客戶端退出再次用password密碼登陸時將不在生效,而當使用123登陸時纔會登陸成功。
這樣一個Get方法模式的漏洞利用已經完成。
而對於Posr方法來說,URL是找不到修改密碼的參數,所以過去使用的方式就是查看頁面源代碼,通過對action元素一欄的參數和寫法寫出一個新的html頁面。
但是這種方法過於複雜,所以當使用burp的時候就很方便,直接通過截斷之後,drop掉當前操作,在http history中找到響應歷史對內容右鍵選擇轉換保存內容爲新的3.html並在其中修改當客戶端點擊後要修改成的密碼即可,然後重複Get方法操作,社工、等待點擊。
當客戶端點擊之後,密碼就被修改完成。
對於low模式下來說,沒有驗證等機制存在,所以容易完成修改,但是當low變爲medium的時候,medium就會存在本地驗證機制,看看源碼:
low模式
medium模式
很顯然,medium多出了一個判斷機制,也就是HTTP的REFERER中需要有127.0.0.1這個值才能進行下面的操作,所以在這裏medium模式也不是足夠安全,同樣可以進行繞過:
我們將截取的內容進行重放,然後在referer中末尾加上127.0.0.1這個值,按照Post方法再生成新的html,其效果依然能達到目的。
實際上由low——>medium都是存在不完善的安全模式,但到了hight模式基本上已經做得比較完善了,通過源碼就能知道:
在hight模式下更是多出了一個驗證機制,所以相對來說是安全。
最後:
CSRF漏洞已經再逐漸防護的越來越好,但是相信上有政策下有對策,沒有絕對安全的做法,這樣的探索始終是一件有趣的事情;如果是初學者操作操作練練手還是挺好的。