CSRF攻擊迫使經過身份驗證的用戶(受害者)發送偽造的HTTP請求,包括受害者的會話cookie到易受攻擊的Web應用程式,這允許攻擊者強制受害者的流覽器生成請求,以便易受攻擊的應用程式感知來自受害者。
我們下麵來瞭解這個漏洞的威脅代理,攻擊向量,安全弱點,技術影響和業務影響。
- 威脅代理 - 任何人都可以將內容加載到用戶的流覽器中,從而迫使他們向您的網站提交請求。
- 攻擊者的方法 - 攻擊者創建偽造的http請求並欺騙受害者通過圖像標籤,xss或其他許多技術提交它們。
- 安全弱點 - CSRF利用了大多數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偽造。下麵列出了問題。
第2步 - 現在需要模擬轉換為1x1
圖像並讓受害者點擊相同的圖像。
第3步 - 提交消息後,消息將顯示如下顯示。
第4步 - 現在,如果受害者點擊以下URL,則執行傳輸,可以使用burp套件攔截用戶操作。可以通過在Get消息中找到轉移來查看轉移,如下所示 -
第5步 - 現在點擊刷新後,將顯示課程完成標記。
預防機制
- 可以通過在隱藏字段中創建唯一標記來避免CSRF,該標記將在HTTP請求的主體中發送,而不是在更容易暴露的URL中發送。
- 強制用戶重新驗證或證明他們是用戶以保護CSRF。例如:驗證碼圖。