溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

CSRF跨站請求偽造漏洞分析與防御的方法

發(fā)布時間:2022-02-17 13:37:42 來源:億速云 閱讀:207 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹了CSRF跨站請求偽造漏洞分析與防御的方法的相關(guān)知識,內(nèi)容詳細(xì)易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇CSRF跨站請求偽造漏洞分析與防御的方法文章都會有所收獲,下面我們一起來看看吧。

CSRF

現(xiàn)在的網(wǎng)站都有利用CSRF令牌來防止CSRF,就是在請求包的字段加一個csrf的值,防止csrf,要想利用該漏洞,要和xss組合起來,利用xss獲得該csrf值,在構(gòu)造的請求中將csrf值加進(jìn)去,就可以繞過csrf防御,利用該漏洞。

該漏洞與xss的區(qū)別:xss是通過執(zhí)行惡意腳本,獲取到用戶的cookie等信息,再利用cookie等信息進(jìn)行繞過登錄限制,做一些用戶可以做的事。

而csrf是偽造請求,讓用戶自己執(zhí)行攻擊者偽造的請求,這個過程是用戶自己完成的。

漏洞原理

跨站請求偽造,攻擊者偽造一個請求(通常是一個惡意鏈接)發(fā)送給用戶,用戶在登錄的情況下點擊該鏈接,服務(wù)器就會以用戶的身份去執(zhí)行攻擊者偽造的這個請求,從而造成攻擊。

漏洞危害

1. 修改用戶信息:修改郵箱,更改密碼、轉(zhuǎn)賬等。

如果修改的信息是GET方式提交的,我們就直接將修改信息的url發(fā)送給用戶,用戶登錄情況下點擊該鏈接,就把他的信息修改為我們url中的值了。

如果是POST傳參,那我們就需要搭建一個公網(wǎng)服務(wù)器,偽造一個自動提交的修改用戶信息的表單,同樣發(fā)送給用戶一個鏈接,讓用戶在登錄存在漏洞網(wǎng)站的情況下訪問我們構(gòu)造的這個表單,從而修改用戶信息。

防御繞過

1. 切換請求方式繞過CSRF令牌驗證:

某些應(yīng)用程序只在POST請求中驗證CSRF令牌,所以我們將請求方法改為GET,就可以繞過CSRF令牌驗證。

抓包,利用burp的 Change request method,來將請求改為GET方式。

CSRF跨站請求偽造漏洞分析與防御的方法

再利用CSRF poc生成器生成一個自動提交腳本代碼的poc。

2. 令牌存在即驗證:

我們可以直接將CSRF令牌參數(shù)刪除,看能否繞過,因為有的應(yīng)用程序只有令牌存在時進(jìn)行驗證,如果不存在令牌,則不驗證。

3. 令牌未綁定到用戶會話繞過:

應(yīng)用程序沒有將CSRF令牌與用戶會話進(jìn)行綁定,只是在他的令牌池中進(jìn)行驗證,只要請求中的令牌存在于令牌 池中,則通過驗證。攻擊者就可以使用自己的賬戶登錄,拿到一個有效令牌,然后在攻擊者將該令牌提供給正常用戶,就會繞過令牌驗證,造成攻擊。

4. 令牌未綁定到會話cookie:

雖然令牌綁定了cookie,但未將令牌綁定到用于跟蹤會話的cookie上。當(dāng)應(yīng)用程序使用兩個不同的框架時,很容易發(fā)生這種情況。一個cookie用于會話處理,一個用于CSRF保護,他倆沒有集成在一起。

漏洞利用

利用burp 的CSRF poc生成器生成poc。再將poc復(fù)制到自己的vps中,讓用戶進(jìn)行訪問該poc,就完成攻擊。

CSRF跨站請求偽造漏洞分析與防御的方法

因為要自動提交修改信息的請求,所以在burp中,還要勾選include auto-submit script,重新生成一個可以自動提交的poc。

CSRF跨站請求偽造漏洞分析與防御的方法

防御措施

1. 增加token驗證:

在http請求中以參數(shù)的形式加入一個隨機產(chǎn)生的token,并在服務(wù)端來驗證這個token值,如果token不存在或者不正確,則拒絕該請求。

2. 驗證Referer字段:

驗證http請求包referer字段值,該字段值記錄了http請求的來源url,如果來源地址不一樣,則說明該請求不合法,服務(wù)端拒絕該請求。這個防御方法攻擊者可以進(jìn)行繞過,攻擊者自定義referer字段來繞過。

或者直接刪除Referer字段值,也可繞過。

3. 對關(guān)鍵操作進(jìn)行二次身份驗證:

修改密碼、重置密碼等要進(jìn)行二次身份驗證,或者增加驗證碼驗證。

4. 使用SameSite cookie

SameSite屬性用來控制在跨站請求中是否包含cookie。通常與CSRF令牌一起使用。

如果該屬性設(shè)置為SameSite=Strict; 則瀏覽器不會在來自其他站點的任何請求中包含cookie,這種方法雖然防御性最好,但是影響用戶體驗,用戶訪問第三方鏈接時,用顯示未登錄。需要再次登錄才能正常與網(wǎng)站交互。

如果設(shè)置為SameSite=Lax; 瀏覽器會判斷跨站請求是GET還是POST請求方式,如果是GET請求,則會給該請求包含cookie,如果是其他請求方法,會不包含cookie。并且還會判斷該請求是否是用戶的頂級導(dǎo)航(單擊鏈接 ),如果是其他請求,例如:由腳本發(fā)起的請求,則也會不包含cookie。

Set-Cookie: SessionId=sYMnfCUrAlmqVVZn9dqevxyFpKZt30NN; SameSite=Strict;
Set-Cookie: SessionId=sYMnfCUrAlmqVVZn9dqevxyFpKZt30NN; SameSite=Lax;

5. CSRF令牌驗證

在服務(wù)端應(yīng)用程序生成,并包含在后續(xù)的http請求中,后面所有的http請求都需要包含該令牌,如果令牌丟失或者無效,服務(wù)端會拒絕該請求。

關(guān)于“CSRF跨站請求偽造漏洞分析與防御的方法”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“CSRF跨站請求偽造漏洞分析與防御的方法”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI