原理
CSRF漏洞是指利用受害者尚未失效的身份認證資訊( cookie、會話等資訊),誘騙其點擊惡意鏈接或者訪問包含攻擊代碼的頁面,在受害人不知情的情況下,以受害者的身份向服務器發送請求,從而完成非法操作(如轉賬、改密、資訊修改等操作),
形成原因
CSRF的形成原因主要是由于Web應用程式沒有充分驗證請求來源的問題,正常的請求必須攜帶正確的Cookie資訊,而攻擊者可以構造一個惡意網站,在其中包含一個發送CSRF請求的鏈接或表單,當用戶訪問這個網站時,瀏覽器會自動發送CSRF請求到被攻擊的網站,從而實作攻擊,
防御措施
- 隨機令牌:在表單中增加一個隨機生成的令牌(token),每次提交表單時都需要提交該令牌,服務器驗證令牌是否正確,從而保證請求來源的合法性,
- Referer驗證:通過檢查HTTP頭部中的Referer欄位,判斷請求來源是否合法,但是該方法并非絕對可靠,因為發送請求時可能會篡改Referer欄位,
- Cookie:設定cookie的SameSite屬性,值為Strict或Lax,可以限制第三方網站訪問該cookie,從而避免其他網站利用cookie發起CSRF攻擊,
- 雙重認證:采用雙重認證機制,例如使用短信驗證碼、Google Authenticator等方式,增強用戶身份驗證,防止受到CSRF攻擊,
- 請求驗證:在服務器端對所有請求進行驗證,判斷請求是否合法,例如判斷請求頭是否包含特定的自定義HTTP頭欄位,或者驗證請求引數是否合法等,
突破方式
- Session劫持:攻擊者通過某些手段獲取用戶的Session ID,然后模擬用戶的身份訪問服務器,從而完成攻擊,
- 跨域POST:攻擊者以受害者身份向其他網站發起POST請求,通過頭部設定繞過同源策略(Same-Origin Policy),達到攻擊目的,
- Clickjacking:攻擊者在一個網站上通過iframe嵌套形式,覆寫另一個網站的操作界面,使用戶執行不知情的行為,
- XSS攻擊:攻擊者將惡意腳本注入到目標網站或者通過鏈接傳遞給受害者,當受害者訪問包含惡意腳本的網頁時,攻擊者就可以利用受害者的權限發送惡意請求,完成攻擊,
【Low】級別
在csrf的界面,點擊Test credentials,輸入默認的賬號和密碼(admin,password),點擊登錄,提示密碼有效,

修改密碼界面輸入新的密碼,再使用工具burpsuit抓包,抓到包后,點擊右鍵,選擇Engagement tools,點擊CSRF Poc,最后會生成一段payload,

復制這段html代碼,把它單獨存下來,再將這個html檔案的兩個密碼都改成123456,并在瀏覽器里面打開,

點擊submit request后會跳轉回dvwa,這時再次驗證原來的密碼,會發現密碼已經失效,

輸入更改后的密碼(123456),驗證成功,證明crsf修改了用戶密碼,


【Medium】級別
這里查看原始碼,與剛剛的low等級比較發現,這里只有一個等級發生了改變,即在傳入密碼和確認密碼引數前先進行了一個if陳述句的判斷,判斷里面的內容主要是驗證這個訪問請求是否從dvwa網站本身發起的,如果不是這個網站發起的請求,后面的操作就不執行,

原始碼是通過referrer這個欄位的引數進行判斷的,通常情況下在增加referrer驗證時就是網站本省當前頁面的ip地址,這里需要抓包看看相關資訊,
首先,修改密碼為10086(這里密碼沒有要求,隨便設定一個),修改密碼成功,這里的網站如下圖url欄中所示,

將剛剛url欄中的網址復制到一個新的網頁打開,發現change下面有提示,大致意思就是請求的來源不正確,

利用工具burpsuit抓包分析有:
對于最開始更改密碼成功的頁面抓包,可以看到有referer資訊,

那解決辦法就將剛剛頁面沒有問題的referer資訊復制到第二個頁面中,再回傳給瀏覽器回應,可以看到密碼已經更改成功,

【High】級別
首先查看原始碼,發現該級別加入了token機制,當用戶訪問修改密碼頁面修改時,服務器會回傳一個隨機的token,向服務器發送請求時,需要提交token,服務器接收請求時會先檢查token,只有token正確,才會去處理回應請求,

利用burpsuit工具抓包可以看到主機名和token值,

通過存盤型的XSS獲得token,這里name長度限制抓包解決,然后將name值設為<iframe src="https://www.cnblogs.com/yeahh/csrf" onl oad=alert(frames[0].document.getElementsByName('user_token')[0].value)>,forword,然后網頁中就得到了一個沒有使用過的token值,

然后回到csrf界面,修改密碼,將url欄中的token值改為剛剛得到的新token值,即把:
http://www.dvwa.com/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change&user_token=7732854e8c3912dd284538ed7533fe51#
改為:
http://www.dvwa.com/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change&user_token=3914162e7106cc2b9dc4905883a2b636#
然后修改密碼成功,

然后去登錄驗證,修改密碼成功,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/555826.html
標籤:其他
上一篇:DVWA靶場之XSS通關詳解
下一篇:返回列表
