會話劫持

會話劫持是指攻擊者在兩臺計算機之間的有效會話被劫持。攻擊者竊取一個有效的會話 ID,以便闖入系統並竊取資料。

大多數身份驗證僅發生在 TCP 會話的開始。在 TCP 會話劫持中,攻擊者透過在會話中間接管兩臺計算機之間的 TCP 會話來獲得訪問許可權。

The attacker sniffs and accesses a legitimate session id from a user interacting with a web server, then uses that session identifier to spoof the session between the regular user and the server to exploit the user's session and access the server directly.

會話劫持發生的原因是

  • 無效會話 ID 沒有賬戶鎖定機制
  • 會話 ID 生成演算法薄弱
  • 處理不安全
  • 會話過期時間無限
  • 會話 ID 短
  • 明文傳輸

會話劫持過程

  1. 嗅探,即執行中間人 (MITM) 攻擊,將自己置於受害者和伺服器之間。
  2. 監視伺服器和使用者之間傳輸的資料包。
  3. 中斷受害者計算機的連線。
  4. 接管會話。
  5. 使用受害者的會話 ID 向伺服器注入新資料包。

防止會話劫持

  • 使用 SSH (Secure Shell) 建立安全通訊通道
  • 透過 HTTPS 連線傳遞身份驗證 cookie
  • 實現登出功能,以便使用者可以結束會話
  • 在成功登入後生成會話 ID
  • 在使用者和 Web 伺服器之間傳遞加密資料
  • 使用字串或長隨機數作為會話金鑰

另見