參考網站
https://www.freebuf.com/articles/web/118352.html
Low
伺服器收到修改密碼的請求後,會檢查參數password_new與password_conf是否相同,如果相同,就會修改密碼,并沒有任何的防CSRF機制。
漏洞利用:
1.構造最基礎的連結
http://10.169.167.182:8080/DVWA/vulnerabilities/csrf/?password_new=hack&password_conf=hack&Change=Change#

當受害者點選了這個連結,他的密碼就會被改成hack(這種攻擊有些拙劣,連結容易看出是改密碼的,而且受害者點了連結之後看到這個頁面就會知道自己的密碼被篡改了。)
用修改後的密碼可以登入成功。
2. 使用短連結來隐藏URL(點選短連結,會自動跳轉到真實網站)
雖然利用了短連結隐藏url,但受害者最終還是會看到密碼修改成功的頁面,是以這種攻擊方法也并不高明。使用短網址會自動跳轉到此路徑,仍可被發現。
3. 構造攻擊頁面
構造攻擊頁面,讓受害者去通路這個頁面然後自動通路該連結。
當受害者通路10.169.167.182.html時,會誤認為是自己點選的是一個失效的url,但實際上已經遭受了CSRF攻擊,密碼已經被修改為了hack。
Medium
Medium級别的代碼檢查了保留變量 HTTP_REFERER(http標頭的Referer參數的值,表示來源位址)中是否包含SERVER_NAME(http標頭的Host參數,及要通路的主機名,這裡是10.169.167.182),希望通過這種機制抵禦CSRF攻擊。
漏洞利用:
過濾規則是http標頭的Referer參數的值中必須包含主機名(這裡是10.169.167.182)
我們可以将攻擊頁面命名為10.169.167.182.html(頁面被放置在攻擊者的伺服器裡,這裡是192.168.232.1)就可以繞過了
1.利用IIS建立網站,如圖将攻擊界面挂載到網站上。
2.浏覽網站
3. Burpsuite的截圖
4. Referer參數完美繞過過濾規則
4.repeater截圖如下:
5.密碼修改成功
用hack密碼登入成功
High
High級别的代碼加入了Anti-CSRF token機制,使用者每次通路改密頁面時,伺服器會傳回一個随機的token,向伺服器發起請求時,需要送出token參數,而伺服器在收到請求時,會優先檢查token,隻有token正确,才會處理用戶端的請求。
要繞過High級别的反CSRF機制,關鍵是要擷取token,要利用受害者的cookie去修改密碼的頁面擷取關鍵的token。
漏洞利用:
1.初始的攻擊思路是構造一個攻擊頁面,将其放置在攻擊者的伺服器,引誘受害者通路,進而完成CSRF攻擊。
繞過需要擷取頁面的token,但是由于浏覽器是不允許跨域請求的,域名A是不允許擷取域名B頁面中的内容的。除非域名A下的頁面主動發送資訊給域名B的頁面,是以我們的攻擊腳本是不可能取到改密界面中的user_token。
2. 利用High級别的XSS漏洞協助擷取Anti-CSRF token。
3. Name存在XSS漏洞,于是抓包,改參數txtName=<iframe src="…/csrf" alert(frames[0].document.getElementsByName(‘user_token’)[0].value)>&mtxMessage=hj&btnSign=Sign+Guestbook。
4.repeater可見
5.成功彈出token
6.寫攻擊界面(借用low級别的代碼稍作修改)
7.通路攻擊界面
8.修改密碼成功,可以用修改後的密碼1登入。
Impossible級别的代碼利用PDO技術防禦SQL注入,至于防護CSRF,則要求使用者輸入原始密碼(簡單粗暴),攻擊者在不知道原始密碼的情況下,無論如何都無法進行CSRF攻擊。