什么是跨站请求伪造 (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:密码!