滲透測試之CSRF
CSRF是跨站偽造請求,常見攻擊手段傳送csrf的連線,通過偽造請求從而受害者點選後會利用受害者的身份發起這個請求。例如新增一個賬號,修改使用者密碼等等。
CSRF攻擊成功有兩個必須的條件。1.被偽造身份的目標曾在該瀏覽器上訪問過CSRF站點,且cookies尚未過期。2.目標被引誘在該瀏覽器上訪問了我們放置惡意程式碼的域名或網站。
接下來我們用bwapp演示CSRF。
例子一:第一個例子是利用csrf更改密碼
點選change並抓取請求資料包。
burpsuite傳送到CSRF poc
我們複製CSRF html到本地,開啟
點選提交請求後自動跳轉到我們的頁面,並且密碼被更改成功
從上面這個最簡單的例子可以知道,CSRF攻擊的一個大體流程,偽造一個請求連結,傳送給受害者,受害者點選後請求被執行,前提是存在CSRF漏洞的瀏覽器cookie還沒有過期,如果過期了是沒有用的。
上面這個例子我們可以直接傳送一個連線請求http://192.168.23.248:88/csrf_1.php?password_new=liao1234&password_conf=liao1234&action=change
但是這樣會很明顯,所以可以線上轉成短域名。然後加上一個誘使受害者點選。
例子二:更改密碼
同樣抓包分析存在referer,沒有token我們直接把referer置空,傳送請求
請求結果可以發現直接被執行了
說明是存在csrf的。
例子三:銀行轉賬
同樣抓請求來分析
我們看到是一個get請求,我們把賬戶修改為別的賬戶,那麼我們直接把這個請求放到瀏覽器中看是否會被執行
http://192.168.23.248:88/csrf_2.php?account=666666&amount=200&action=transfer
可以看到請求被執行了賬戶的金額減少了。
然後總結一下,怎麼找CSRF漏洞,一般抓到資料包先看看如果不帶有token驗證,然後還有一個固定的變數可以被控制,就像上面的密碼和確認密碼可以被控制一樣就會存在CSRF。
還有一種是post請求是=時不驗證referer也沒有token,測試方法沒有token,referer為空請求成功就存在CSRF
所以CSRF的關鍵是token,看到沒token的時候CSRF走一波