什麼是會話劫持?

已發表: 2023-04-27

會話劫持是 WordPress 網站所有者需要了解的一種網絡攻擊。 也稱為 TCP 會話劫持,會話劫持使攻擊者看起來像是正確登錄的用戶。 攻擊者通過在有效用戶不知情或未經許可的情況下獲取用戶會話 ID 來接管用戶會話。 攻擊者竊取用戶的會話 ID 後,他們可以偽裝成目標用戶。 在授權用戶登錄同一系統後,攻擊者將能夠執行授權用戶可以執行的所有操作。

黑客可以對被劫持的會話做的最糟糕的事情之一是在未經身份驗證的情況下訪問 Web 應用程序或服務器控件。 當攻擊者劫持用戶的會話時,只要會話處於活動狀態,他們就不需要對自己進行身份驗證。 生成會話的應用程序認為他們是經過身份驗證的用戶,他們劫持了其會話。

換句話說,黑客將享有與他們所入侵的用戶相同的訪問權限。 由於合法用戶在攻擊發生之前已經驗證了他們的會話,成功的劫持可以讓攻擊者完全繞過驗證。

在本指南中,我們將深入探討會話劫持的細節。 我們將準確地向您展示您需要做什麼來防止它發生在您的 WordPress 網站上。

會話到底是什麼?

會話只是在整個單個 HTTP 連接中發生的通信端點之間的一系列交互。

超文本傳輸協議 (HTTP) 是網絡的基礎。 它允許您使用超文本鏈接和加載網頁。 HTTP 也是一種應用層協議,用於在網絡上的設備之間傳遞信息。

HTTP 的一個關鍵特徵是它是“無狀態的”。 這意味著它不會保存有關打開網站會話的客戶(如您和您的瀏覽器)的任何數據。 每個會話都是全新的。 HTTP 不保留有關用戶以前會話的數據。

處理無狀態

像 WordPress 這樣的 Web 應用程序需要跟踪來自相同和不同用戶的多個連接之間的狀態。 它需要識別每個用戶的會話,一旦他們登錄——可能在多個設備或瀏覽器上。

當用戶登錄到 WordPress 等應用程序時,服務器會創建一個會話。 會話將通過存儲用戶獨有的參數來維護用戶的連接“狀態”。 在用戶登錄到應用程序的整個期間,會話在服務器上保持活動狀態。

當用戶註銷系統或在預定義的無活動時間後,會話結束。 當用戶會話結束時,應用程序應從服務器內存中刪除其數據。

會話標識符

會話 ID(或“密鑰”或“令牌”)是唯一的會話標識符。 通常,它們是服務器和客戶端相互傳輸的長而隨機的字母數字字符串。 身份驗證應用程序通常將會話 ID 存儲在 URL、cookie 或網頁上的隱藏字段中。

雖然會話 ID 對於在無狀態系統中維護狀態很有用,但它們也有一些潛在的安全隱患。 例如,如果我們了解為 Web 應用程序生成會話 ID 的算法,我們就可以自己生成它們。 此外,如果 Web 應用程序未使用 SSL 加密將 HTTP 加密為 HTTPS,它將以明文形式傳輸會話 ID。 在公共網絡上,任何人都可以竊聽未加密的連接並竊取會話 ID。

會話劫持在實踐中究竟是如何工作的?

一次成功的會話劫持攻擊是極其隱秘的。 它們通常是在非常繁忙的網絡上完成的,有很多活躍的通信會話。

一些最常見的會話劫持形式利用:

  • 可預測的會話令牌 ID
  • 會話嗅探
  • 會話劫持
  • 瀏覽器中間人惡意軟件
  • 跨站腳本
  • 會話固定

讓我們分別看一下這些威脅向量中的每一個。

可預測的會話令牌 ID

許多 Web 服務器使用自定義算法或預定義模式來生成它們的會話 ID。 唯一會話令牌的整體可預測性越大,它就越弱。

黑客越容易預測。

會話嗅探

會話嗅探是黑客進行應用層會話劫持最簡單、最基本的手段之一。

攻擊者將使用數據包嗅探器(例如 Wireshark)或代理(例如 OWASP Zed)來捕獲網絡流量。 如果此流量包含客戶端與網站之間連接的未加密會話 ID,則這些 ID 可能會被盜。 黑客可以使用有效的 ID 或令牌快速獲得對站點及其用戶帳戶的未授權訪問。

會話劫持

攻擊者可以使用數據包嗅探來攔截用戶登錄站點時的會話 cookie。 如果登錄頁面未加密或使用弱加密,網絡犯罪分子可以通過這種方式輕鬆劫持用戶會話。

瀏覽器中間人

在這種攻擊中,攻擊者必須先用惡意軟件感染受害者的計算機或瀏覽器。

這種惡意軟件可以在用戶不知情的情況下無形地修改瀏覽器交易信息並創建交易。 損壞的瀏覽器的請求是由受害者的物理設備發起的,因此它們被認為是有效的。

跨站腳本

網絡罪犯可能會利用應用程序或服務器漏洞將任意代碼注入站點的網頁。 這將導致訪問者的瀏覽器在加載受感染頁面時執行該代碼。

當會話 cookie 中未設置 HTTP-only 時,可以通過注入代碼竊取會話密鑰。 這將為攻擊者提供劫持用戶會話所需的一切。

會話固定

這使用尚未經過身份驗證的有效會話 ID。 使用會話固定,攻擊者將嘗試誘騙用戶使用此特定 ID 進行身份驗證。

一旦身份驗證發生,攻擊者現在就可以完全訪問受害者的計算機。

會話固定探索了 Web 應用程序如何管理會話 ID 的一個很大限制。

黑客從會話劫持中得到了什麼?

當黑客劫持會話時,他們可以執行合法用戶在該活動會話中被授權執行的任何操作。

最有效且最具破壞性的會話劫持可能會導致:

  • 受損的銀行賬戶
  • 未經授權在線購買物品
  • 識別盜竊
  • 從公司內部系統竊取數據

不好! 一次成功的會話劫持會話會造成很大的破壞。

會話劫持的一些例子是什麼?

2012 年秋天,兩位名叫 Juliano Rizzo 和 Thai Duong 的安全研究人員宣布了 CRIME,這是一種利用 TLS 請求壓縮比內的信息洩漏作為側通道的攻擊。 這使他們能夠解密客戶端向服務器發出的請求。

反過來,這使他們能夠獲取用戶的登錄 cookie 並劫持會話,在電子商務網站和銀行等高價值在線目的地上冒充他們。

該演示展示了黑客如何執行此類攻擊來恢復 HTTP 請求的標頭。

CRIME 致力於解密網站設置的 HTTPS cookie,以使用暴力破解來記住經過身份驗證的用戶。 攻擊代碼迫使受害者的瀏覽器向目標網站發送特製的 HTTPS 請求,並在壓縮後分析其長度變化,以確定受害者的會話 cookie 的值。 這是可能的,因為 SSL/TLS 使用稱為 DEFLATE 的壓縮算法,它消除了重複的字符串,正如我們在上面看到的。

由於瀏覽器中的安全機制,攻擊代碼無法讀取請求中包含的會話 cookie。 但是,它可以控制每個新請求的路徑,並可以向其中插入不同的字符串以嘗試匹配 cookie 的值。

會話 cookie 值可以很長。 它們由大小寫字母和數字構成。

因此,CRIME 攻擊代碼必鬚髮起大量請求來解密它們,這可能需要幾分鐘時間。

會話劫持預防

重要的是要記住,攻擊者可以在不安全地傳輸或存儲會話 ID(或其他敏感的 cookie 值)時竊取和重用它們。 雖然不能保證 100% 的保護,但使用加密是主要的防禦措施。

當用戶進行身份驗證時,SSL 和安全 cookie 需要是強制性的。 當經過身份驗證的用戶訪問多個安全頁面時,他們需要被迫使用 HTTPS。

除此之外,WordPress 網站所有者需要使用 iThemes Security Pro WordPress 安全插件來保護會話劫持。 iThemes Security Pro 中內置的可信設備功能將每週 7 天、每天 24 小時工作,以幫助保護您的站點免受這種危險攻擊。 了解如何為您網站的用戶設置它。

了解和防止會話劫持

通過本指南中的信息,您了解保護 WordPress 站點免受會話劫持所需的一切:

  1. 確保您的站點使用 SSL 完全加密,並強制用戶使用 HTTPS。
  2. 下載並安裝 iThemes Security Pro 插件。

通過採取這些簡單的步驟,您將保護您的站點免受會話劫持。