會話固定


會話固定(Session fixation)是一種誘騙受害者使用攻擊者指定的會話標識(SessionID)的攻擊手段。這是攻擊者獲取合法會話標識的最簡單的方法。會話固定也可以看成是會話劫持的一種類型,原因是會話固定的攻擊的主要目的同樣是獲得目標用戶的合法會話,不過會話固定還可以是強迫受害者使用攻擊者設定的一個有效會話,以此來獲得用戶的敏感信息。

   1、 攻擊者通過某種手段重置目標用戶的SessionID,然后監聽用戶會話狀態;
   2、 目標用戶攜帶攻擊者設定的Session ID登錄站點;
   3、 攻擊者通過Session ID獲得合法會話。

** 攻擊者重置SessionID的方式:**

重置Session ID的方法同樣也有多種,可以是跨站腳本攻擊,如果是URL傳遞Session ID,還可以通過誘導的方式重置該參數,比如可以通過郵件的方式誘導用戶去點擊重置Session ID的URL,使用Cookie傳遞可以避免這種攻擊。

使用Cookie來存放Session ID,攻擊者可以在以下三種可用的方法中選擇一種來重置Session ID。

  • 1、 使用客戶端腳本來設置Cookie到瀏覽器。大多數瀏覽器都支持用客戶端腳本來設置Cookie的,例如document.cookie=”sessionid=123”,這種方式可以采用跨站腳本攻擊來達到目的。防御方式可以是設置HttpOnly屬性,但有少數低版本瀏覽器存在漏洞,即使設置了HttpOnly,也可以重寫Cookie。所以還需要加其他方式的校驗,如User-Agent驗證,Token校驗等同樣有效。
<script type='text/javascript'>document.cookie='PHPSESSID=ba9saokf601jodg9nt0ui29bq5'</script>
  • 2、 使用HTML的標簽加Set-Cookie屬性。服務器可以靠在返回的HTML文檔中增加標簽來設置Cookie。例如<meta http-equiv=Set-Cookiecontent=”sessionid=123”>,與客戶端腳本相比,對標簽的處理目前還不能被瀏覽器禁止。
<meta http-equiv='Set-Cookie' content='PHPSESSID=ba9saokf601jodg9nt0ui29bq5'>
  • 3、 使用Set-Cookie的HTTP響應頭部設置Cookie。攻擊者可以使用一些方法在Web服務器的響應中加入Set-Cookie的HTTP響應頭部。如會話收養,闖入目標服務器所在域的任一主機,或者是攻擊用戶的DNS服務器。

  • 4、如果是URL中傳遞的(基本上沒有了)可以直接:

http://URL/index.php?PHPSESSID=ba9saokf601jodg9nt0ui29bq5

這里還有一點需要注意,攻擊者如果持有的是有效的SessionID,那么防御措施就一定得校驗驗證。如攻擊者可以先到目標站點登錄,獲得有效的Session ID,然后再拿這個Session ID去重置目標用戶的會話標識,那么這時候用戶將會在不知情的情況下訪問攻擊者設定的合法會話(實際上登錄的是攻擊者的賬號了)中,從而攻擊者將有可能獲取到目標用戶的敏感信息。
** 防御方法:**

   1、 用戶登錄時生成新的Session ID。如果攻擊者使用的會話標識符不是有效的,那么這種方式將會非常有效。如果不是有效的會話標識符,服務器將會要求用戶重新登錄。如果攻擊者使用的是有效的Session ID,那么還可以通過校驗的方式來避免攻擊。
   2、 大部分防止會話劫持的方法對會話固定攻擊同樣有效。如設置HttpOnly,關閉透明化Session ID,User-Agent驗證,Token校驗等。

參考:https://www.jianshu.com/p/7a576569ca40


免責聲明!

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



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