什麼是跨站請求偽造 (CSRF)?

已發表: 2023-04-12

跨站點請求偽造(CSRF 或 XSRF)漏洞的嚴重性評級很少很高或很嚴重。 然而,它們仍然會造成很多傷害。 它們是近年來繼跨站點腳本 (XSS) 漏洞之後第二常見的 WordPress 漏洞。 如果您了解什麼是 CSRF 漏洞以及攻擊者通常如何利用它們,您就會了解如何更好地保護您的網站。

繞過同源策略

CSRF 漏洞使攻擊者有可能規避稱為同源策略的標準瀏覽器功能。 所有 Web 瀏覽器都遵循此規則以防止 CSRF 啟用的干擾類型。 通常,當您加載網頁時,您的瀏覽器僅與一個域或子域交互,除了任何允許的例外。 而且它只會接受一種協議的內容,HTTP 或 HTTPS(不是兩者),不會警告您存在問題。 如果惡意個人繞過同源策略,他們還可能會誘騙您單擊鏈接,從而通過意外地與其他站點交互來執行不需要的操作。

如果您的 WordPress 網站已通過 CSRF 漏洞被利用,您和您的訪問者可能會遭受網絡釣魚、點擊劫持等更糟的攻擊。 幸運的是,及時更新、強身份驗證和無密碼登錄體驗的密鑰將強化您的 WordPress 站點並阻止許多攻擊,包括 CSRF 嘗試。

從視覺上看,您幾乎沒有或根本沒有跡象表明您正在以不受歡迎的方式與另一個站點進行交互。 點擊劫持就是這樣工作的。 如果您的 WordPress 網站已通過 CSRF 漏洞被利用,您和您的訪問者可能會遭受網絡釣魚、點擊劫持等更糟的攻擊。

在本指南中,我們將深入研究跨站點請求偽造的細節。 我們將查看 CSRF 漏洞的具體示例,以便您了解它們的工作原理。 然後我們將向您展示如何防止 CSRF 漏洞出現在您的網站上。 我們還將建議一些方法來抵消或限製成功的 CSRF 攻擊可能造成的損害,方法是加強您的站點以抵禦這些和其他類型的攻擊。

讓我們來看看。

跨站請求偽造 (CSRF) 攻擊如何影響您的 WordPress 網站?

當 CSRF 攻擊成功時,其受害者會無意中授權進行有害操作,例如更新其登錄憑據。 他們可能會被誘騙讓攻擊者接管他們的用戶帳戶。 更糟糕的是,CSRF 攻擊的受害者可能會讓攻擊者代表他們發起財務轉賬。

如果您的 WordPress 網站上的插件包含 CSRF 漏洞,攻擊者可能會劫持某些用戶帳戶。 那將是最壞的情況之一。 如果被盜帳戶在 WordPress 中具有管理角色,或者用戶在其他站點上重複使用其密碼,則損失可能很大。

跨站請求偽造

CSRF 攻擊如何運作?

黑客必須存在三個不同的條件才能進行 CSRF 攻擊。 如果您在一般水平上理解它們,您將很好地掌握一些網絡安全基礎知識。

1. 基於 Cookie 的會話處理

與其他無狀態應用程序一樣,WordPress 依靠會話 cookie 來識別用戶。 在安全性較低或受到威脅的情況下,攻擊者可能會製作一些虛假的會話 cookie 或操縱登錄用戶執行一些不需要的操作。 WordPress 將接受來自或看似來自已登錄用戶的偽造和操縱請求。

雖然 CSRF 攻擊通常以基於 cookie 的會話處理為目標,但這並不是他們的唯一目標。 CSRF 攻擊可以有效對抗任何自動將用戶憑據添加到請求的應用程序。 基於證書的身份驗證和 HTTP 基本身份驗證也因此容易受到 CSRF 漏洞的影響。

2.可以有針對性地採取相關行動

目標應用程序中必須有一些可以誘使受害者執行的操作。 這可能是特權操作,例如更改用戶權限。 它可能與用戶特定數據相關,例如更新用戶密碼。 這些是所有 Web 應用程序(包括 WordPress)中的常見操作。 它們具有作為黑客目標的價值,因為它們可能為黑客竊取用戶帳戶開闢一條道路,並深入挖掘從事盜竊、欺詐或其他惡意活動的方法。

3.沒有不可預測的請求參數

執行目標操作的請求必須是已知的或可預測的。 如果目標請求不需要包含攻擊者無法確定或猜測其值的參數,則它們更容易受到操縱。

例如,如果有效的密碼更改請求必須包含現有密碼,那麼它就是安全的——只要攻擊者不知道密碼。 當開發人員使用它們來保護代碼時,CSRF 令牌和 SameSite cookie 為攻擊者增加了更多障礙。 但有時開發人員沒有正確或根本沒有實施這些安全方法。 (這就是為什麼強大的、無密碼的用戶身份驗證很有價值的原因。)

利用 CSRF 漏洞更改用戶帳戶電子郵件 - 示例

這是一個更深入的例子。 它實際上不會起作用,但它說明了有效的 CSRF 漏洞利用的主要概念。

考慮電子郵件更改請求。 當用戶執行此操作時,他們會向接收它的 Web 服務器發出如下所示的 HTTP 請求:

 POST /test HTTP/1.1 Host: yourwebsite.com Content-Type: application/x-www-form-urlencoded Content-Length: 60 Cookie: session=yvthgjrudhgeQkAPzeQ5gHgTvlyxHfsAfE;[email protected]

為什麼它有效

這滿足 CSRF 所需的條件,如果/因為:

  • 目標站點/應用程序使用會話 cookie 來識別哪個用戶發出了請求,並且沒有其他令牌或機制來跟踪用戶會話。 這就是開發人員應使用 CSRF 令牌和/或 SameSite cookie 的原因。
  • 更改用戶的電子郵件地址是符合攻擊者利益的相關操作。 確實是! 如果您可以將用戶的電子郵件地址更改為您控制的地址,您就可以完全控制他們的帳戶。
  • 攻擊者知道更改用戶電子郵件地址所需的請求參數,並可以為它們生成有效值。 這些參數不是秘密,不難確定許多人使用哪些電子郵件地址作為其在線帳戶。 會話 cookie 比較棘手。

攻擊者如何竊取會話 cookie

攻擊者的主要障礙是確定將訪問特定用戶帳戶的參數的實際值。 他們可能會通過構建一個針對目標網站用戶的網頁來做到這一點。 這個欺騙性網站可能包含看似具有合法目的的鏈接或按鈕,例如索取免費禮物。 實際上,如果您單擊這些鏈接或按鈕,唯一能免費獲得一些甜食的人就是攻擊者。

當您單擊這些欺詐性鏈接時,它們會向目標站點和 CSRF 易受攻擊的站點發出更改地址請求。 如果您登錄到該站點,則該請求將有效。 你的賬戶被盜了——你交出了你的鑰匙。

保持登錄狀態的 WordPress 網站用戶在他們的瀏覽器中有一個活動的會話 cookie,即使他們在不同的網站上,該 cookie 也會持續存在。 他們的瀏覽器將自動在偽造的請求中包含該會話 cookie。 WordPress 可能會將此視為完全有效的更改地址請求 - 即使它來自另一個站點並且用戶不知道他們正在這樣做。

假設沒有其他安全措施,如 SameSite cookie 屬性,易受攻擊的目標站點將像處理有效請求一樣處理偽造請求。 如果目標網站不執行地址更改確認步驟,或者如果攻擊者有辦法繞過它,攻擊者將成功地將用戶地址更改為攻擊者選擇的任何地址。

CSRF 攻擊如何傳遞到易受攻擊的網站

CSRF 攻擊和反射跨站腳本(Reflected XSS)攻擊的傳遞機制是相似的。

在大多數情況下,攻擊者會將他們的惡意代碼放置在他們控制的欺騙性站點上。 這可能是他們已經入侵的合法站點,這就是 Google 維護欺騙性站點列表的原因。 如果您在此列表中,所有瀏覽器都會警告其用戶離開! 這就是 iThemes Security 每天檢查以確保您的網站沒有成為黑客工具的原因。

讓潛在受害者訪問欺騙性網站只是基本的社交媒體和電子郵件營銷的問題。 有時,惡意代碼只是簡單地放置在活躍區域中的熱門站點上。

攻擊者甚至可能不需要網站來引誘受害者。 一些簡單的 CSRF 攻擊使用 GET 方法。 當您單擊鏈接或在地址欄中輸入 URL 時,瀏覽器就會執行此操作。 它使用鏈接中的 URL 或您提供的 URL 發出 GET 請求。 有時,可以通過向易受攻擊的網站發送單個 GET 請求來完全執行 CSRF 攻擊。 在這種情況下,攻擊者可能不需要使用欺騙性網站。 他們可以簡單地直接向受害者提供惡意 URL。

保護您的站點免受跨站點請求偽造 (CSRF) 攻擊

CSRF 漏洞經常出現在插件中,有時甚至出現在主題中。 當黑客以他們為目標時,保護自己並不難。 使用您信任的優質插件和主題,刪除您不使用的插件和主題,並使您的所有軟件保持最新狀態。 您還應該實施經過深思熟慮的用戶安全策略並考慮使用無密碼。 如果 CSRF 漏洞(或任何其他漏洞)在您的站點上被利用來獲取對用戶帳戶的訪問權限,那麼如果您使用密鑰,攻擊者將無濟於事。 沒有人能偷走不存在的東西。

除了管理更新和警告您易受攻擊的插件和主題外,iThemes Security Pro 還可以輕鬆設置和管理基於用戶和角色的安全規則。 根據最小權限原則進行權限授權。 使用驗證碼保護您的登錄、密碼恢復和聯繫表單。 不要給你的用戶比他們需要的更多的能力。 要求更高權限的用戶使用更強的身份驗證方法。 並且絕對採用最方便、最簡單的方式無需密碼即可登錄 WordPress:密碼!