原理
csrf又稱跨站偽造請求攻擊,現代網站利用Cookie、Session 或 Token 等機制識別用戶身份,一旦用戶訪問某個網站,瀏覽器在之后請求會自動帶上這些信息來識別用戶身份。用戶在網站進行請求或者操作時服務器會給出對應的內容,比如說用戶查詢自己的個人信息,或者用戶在一個網站進行資金轉移的操作等等,網站得到用戶的請求時帶著上面提到的識別身份的信息,例如用戶訪問了攻擊者搭建的惡意網站,在網站中有一些偽造的惡意操作比如說轉賬,用戶點擊了這個請求,使用了這個惡意操作,導致用戶的瀏覽器向剛剛確認完身份的網站再次發送轉賬請求,那么網站就會認定用戶的身份不會進行過多驗證的去進行轉賬操作。
通過上面的了解,我們進行csrf注入用戶身份是至關重要的,所以一般要避免csrf漏洞也是在這方面下手,一些過濾也是在這里進行;在誘導用戶進行惡意操作時,我們也需要做出一些看似善意的界面,比如說一個把轉賬功能的超鏈接名稱設置成帶有迷惑性的字句‘領取禮包’之類;在構造惡意請求時通過使用get或post類似這樣的請求http://www.examplebank.com/withdraw?account=AccoutName&amount=1000&for=PayeeName
這個請求的樣子太容易讀懂,我們需要對他進行一些改變,例如把他變成一個短鏈接
當然也有一些過濾手法,我們使用dvwa靶場來看看吧
dvwa靶場
low(get傳參)
修改密碼為1
修改成功,url欄有變化,里面有修改的信息
說明時get傳參,我們可以自己修改url欄中的信息達到任意修改的效果,我們先測試一下現在的密碼是不是1
現在我們通過url欄修改密碼成2
測試是否成功
我們抓一下這個包
使用工具將它修改成csrf poc
復制html代碼
生成一個html文件,如果我們不在打開dvwa靶場的瀏覽器打開這個html文件,請求不會成功因為沒有身份驗證
但如果我們在打開靶場的瀏覽器打開這個文件
點擊發送請求就會直接修改成功
這是最基礎的csrf注入,更進一步的可能對referer、cookie等等身份信息有驗證這些就等到遇到再進行學習吧。