跨站請求偽造 (CSRF)



CSRF 攻擊迫使經過身份驗證的使用者(受害者)傳送偽造的 HTTP 請求,包括受害者的會話 Cookie 到易受攻擊的 Web 應用程式,這允許攻擊者強制受害者的瀏覽器生成請求,使易受攻擊的應用程式將其視為來自受害者的合法請求。

讓我們藉助簡單的圖表瞭解此缺陷的威脅代理、攻擊媒介、安全弱點、技術影響和業務影響。

csrf

示例

這是一個經典的 CSRF 示例:

步驟 1 - 假設易受攻擊的應用程式以純文字形式傳送狀態更改請求,而沒有任何加密。

http://bankx.com/app?action=transferFund&amount=3500&destinationAccount=4673243243

步驟 2 - 現在,駭客構建了一個請求,透過將請求嵌入到儲存在攻擊者控制下的各種站點上的影像中,將資金從受害者的帳戶轉移到攻擊者的帳戶 -

<img src = "http://bankx.com/app?action=transferFunds&amount=14000&destinationAccount=attackersAcct#" 
   width = "0" height = "0" />

動手實踐

步驟 1 - 讓我們透過將 Java 指令碼嵌入到影像中來執行 CSRF 偽造。問題的快照如下所示。

csrf1

步驟 2 - 現在我們需要將轉賬模擬成一個 1x1 的影像,並讓受害者點選它。

csrf2

步驟 3 - 提交訊息後,訊息將如下所示。

csrf3

步驟 4 - 現在,如果受害者點選以下 URL,則執行轉賬操作,這可以透過使用 Burp Suite 攔截使用者操作來找到。我們能夠透過在 Get 訊息中發現它來檢視轉賬,如下所示:

csrf3

步驟 5 - 現在,點選重新整理後,將顯示課程完成標記。

預防機制

  • 可以透過在隱藏欄位中建立唯一的令牌來避免 CSRF,該令牌將傳送在 HTTP 請求的主體中,而不是在更容易暴露的 URL 中。

  • 強制使用者重新進行身份驗證或證明他們是使用者以保護 CSRF。例如,驗證碼。

廣告