1. beplay体育能用吗网络安全学院
  2. CSRF

跨站点伪造(CSRF)

在本节中,我们将解释哪些跨站点伪造是什么,描述一些常见CSRF漏洞的例子,并解释如何防止CSRF攻击。

什么是CSRF?

跨站点伪造(也称为CSRF)是一个网络安全漏洞,允许攻击者诱使用户执行他们不打算执行的操作。beplay体育能用吗它允许攻击者部分规避相同的原始策略,该策略旨在防止不同的网站相互干预。beplay体育能用吗

CSRF

CSRF攻击有什么影响?

在成功的CSRF攻击中,攻击者会导致受害者用户无意地采取行动。例如,这可能是更改其帐户上的电子邮件地址,更改其密码或进行资金转移。根据操作的性质,攻击者可能能够完全控制用户的帐户。如果妥协的用户在应用程序中具有特权角色,则攻击者可能能够完全控制应用程序的所有数据和功能。

CSRF如何工作?

为了实现CSRF攻击,必须有三个关键条件:

  • 相关行动。应用程序中有一个动作,攻击者有理由诱发。这可能是特权操作(例如为其他用户修改权限)或对用户特定数据的任何操作(例如更改用户自己的密码)。
  • 基于Cookie的会话处理。执行该操作涉及发布一个或多个HTTP请求,该应用程序仅依靠会话Cookie来确定已提出该请求的用户。没有其他机制来跟踪会话或验证用户请求。
  • 没有不可预测的请求参数。执行操作的请求不包含任何值的参数,其值无法确定或猜测。例如,当导致用户更改密码时,如果攻击者需要知道现有密码的值,则该功能并不脆弱。

例如,假设应用程序包含一个函数,该函数使用户可以在其帐户上更改电子邮件地址。当用户执行此操作时,他们会像以下内容一样提出HTTP请求:

帖子/电子邮件/更改http/1.1主机:vlaberable-website.com cbeplay体育能用吗ontent-type:application/x-www-form-urlencoded content-lengtth:30 cookie:session = yvthwsztyeqkapzeqkapzeq5ghgtvlyxhfshfs email emaim = wiener@normal-user.com

这符合CSRF所需的条件:

  • 在用户帐户上更改电子邮件地址的动作是攻击者感兴趣的。在此操作之后,攻击者通常将能够触发密码重置并完全控制用户帐户。
  • 该应用程序使用会话cookie确定哪个用户发布了请求。没有其他令牌或机制来跟踪用户会话。
  • 攻击者可以轻松地确定执行操作所需的请求参数的值。

有了这些条件,攻击者可以构建一个包含以下HTML的网页:beplay体育能用吗

< /form>

如果受害者用户访问了攻击者的网页,则会发生以下情况:beplay体育能用吗

  • 攻击者的页面将触发HTTP请求到脆弱的网站。beplay体育能用吗
  • 如果用户登录到脆弱的网站,则其浏览器将自动将其会话cookie包含在请求中(假设beplay体育能用吗Samesite cookie不使用)。
  • 脆弱的网站将以正常方式处理请求beplay体育能用吗,将其视为受害者用户制作的请求,并更改其电子邮件地址。

笔记

尽管通常在基于Cookie的会话处理方面进行了CSRF,但在其他情况下,该应用程序会自动将某些用户凭据添加到请求中,例如HTTP基本身份验证和基于证书的身份验证。

如何构建CSRF攻击

手动创建CSRF利用所需的HTML可能很麻烦,尤其是在所需请求包含大量参数的情况下,或者请求中还有其他怪癖。构建CSRF利用的最简单方法是使用CSRF POC发生器这是内置的Burp Suite专业人士

  • 在Burp Suite Professional的任何地方选择要测试或利用的请求。
  • 从右键单击上下文菜单中,选择参与工具 /生成CSRF POC。
  • Burp Suite将生成一些HTML,这些HTML将触发所选请求(减去cookie,这将由受害者的浏览器自动添加)。
  • 您可以在CSRF POC发生器中调整各种选项,以微调攻击方面。您可能需要在某些不寻常的情况下执行此操作,以处理请求的古怪功能。
  • 将生成的HTML复制到网页中,以登录到脆弱网站的浏览器中查看,beplay体育能用吗并测试是否成功发出了预期的请求并发生所需的操作。

如何提供CSRF利用

跨站点伪造攻击的交付机制基本相同反映XSS。通常,攻击者将将恶意HTML放在他们控制的网站上,然后诱使受害者访问该网站。beplay体育能用吗这可能是通过通过电子邮件或社交媒体消息向用户馈送到网站的链接来完成的。beplay体育能用吗或者,如果将攻击放入流行的网站(例如,在用户评论中),他们可能只是等待用户访问该网站beplay体育能用吗。

请注意,一些简单的CSRF利用采用了GET方法,并且可以在脆弱网站上使用单个URL完全独立。beplay体育能用吗在这种情况下,攻击者可能不需要雇用外部站点,并且可以直接在弱势域中向受害者喂食恶意URL。在前面的示例中,如果可以使用GET方法执行更改电子邮件地址的请求,那么独立攻击将看起来像这样:

防止CSRF攻击

防御CSRF攻击的最强大方法是包括CSRF令牌在相关请求中。令牌应该是:

  • 对于一般的会话令牌而言,不可预测的具有高熵。
  • 与用户的会话绑在一起。
  • 在执行相关操作之前,在每种情况下都严格验证。

另一种针对CSRF有效的额外防御,可以与CSRF令牌, 是Samesite cookie

常见的CSRF漏洞

最有趣的CSRF漏洞是由于验证中的错误CSRF令牌

在上一个示例中,假设该应用程序现在在更改用户电子邮件的请求中包含一个CSRF令牌:

帖子/电子邮件/更改http/1.1主机:volserable-website.com cbeplay体育能用吗ontent-type:application/x-www-form-urlencoded content-lengtth:68 cookie:session = 2yqidcpia41wratfjpqvm9tokdokdokdokdokdokdokdokdokdokdokdokdokdokdokdkmvkmvkmvlm csrf=wff1sszmuhhhierusruultuntruultunctruusementwwruusjertlyr>

这应该防止CSRF攻击,因为它违反了CSRF漏洞的必要条件:该应用程序不再仅依赖于cookie进行会话处理,并且该请求包含一个参数,其价值攻击者无法确定。但是,有多种方式可以破坏防御,这意味着该应用程序仍然容易受到CSRF的影响。

CSRF令牌的验证取决于请求方法

当请求使用Post方法时,某些应用程序正确验证了令牌,但是在使用GET方法时会跳过验证。

在这种情况下,攻击者可以切换到绕过验证并提供CSRF攻击的GET方法:

get/email/change?email=pwned@evil-user.net http/1.1主机:vilesnerable-webbeplay体育能用吗site.com cookie:session = 2yqidcpia41wratfjpqvm9tokdvkmvkmvkmvkmvlm

CSRF令牌的验证取决于令牌

某些应用程序在存在时正确验证令牌,但如果省略令牌,则会跳过验证。

在这种情况下,攻击者可以删除包含令牌(不仅仅是其值)的整个参数,以绕过验证并提供CSRF攻击:

帖子/电子邮件/更改http/1.1主机:vilesable-website.com cobeplay体育能用吗ntent-type:application/x-www-form-urlencoded content-Length:25 cookie:session = 2yqidcpia41wratfjpqvm9tokdokdokdokdokdvkmvkmvkmvkmvkmvkmvlm

CSRF令牌与用户会话没有绑定

某些应用程序未验证令牌与提出请求的用户相同的会话。取而代之的是,该应用程序保留了它已发行的全球代币池,并接受了该池中出现的任何令牌。

在这种情况下,攻击者可以使用自己的帐户登录应用程序,获取有效的令牌,然后在其CSRF攻击中向受害者用户提供代币。

在上述漏洞的变化中,某些应用程序确实将CSRF令牌与cookie联系在一起,但不是与用于跟踪会话的相同cookie。当应用程序采用两个不同的框架,一个用于会话处理,另一个用于CSRF保护时,很容易发生这种情况,这些框架没有集成在一起:

post/email/change http/1.1主机:vilesnable-websibeplay体育能用吗te.com content-type:application/x-www-form-urlencoded content-Length:68 cookie:session = psjysscwkpmc60lpfoahkixufum4uxwf;CSRFKEY = RZHCNSZEP8DBI6ATZAGGOSYYQJQJQJQTZ5DV CSRF=RHV7YQDO0XCQ9GLEAH2WVBMUFQYOQ7TY&email = wiener = wiener = wiener@normal-user.com

这种情况很难利用,但仍然很容易受到伤害。如果该网站包含beplay体育能用吗允许攻击者在受害者的浏览器中设置cookie的任何行为,则可以进行攻击。攻击者可以使用自己的帐户登录应用程序,获取有效的令牌和相关的曲奇,利用曲奇设定的行为将其cookie放入受害者的浏览器中,并在CSRF攻击中向受害者喂给受害者。

笔记

与CSRF漏洞相同的Web应用程序中,Cookie设定的行为甚至不需要存在。beplay体育能用吗如果受控的cookie具有合适的范围,则可以利用同一总体DNS域中的任何其他应用程序在目标中设置cookie。例如,在staging.demo.normal-beplay体育能用吗website.com可以利用将提交给的曲奇放置secure.normal-beplay体育能用吗website.com

在前面漏洞的进一步变化中,某些应用程序不保留已发行的代币的任何服务器端记录,而是在cookie和请求参数中复制每个令牌。当验证后续请求时,该应用程序简单地验证了请求参数中提交的令牌是否与Cookie中提交的值匹配。这有时称为针对CSRF的“双重提交”防御,并且被提倡,因为它易于实施并避免对任何服务器端状态的需求:

发布/电子邮件/更改http/1.1主机:vlaberable-website.com cbeplay体育能用吗ontent-type:application/x-www-form-urlencoded内容长度:68 cookie:session = 1dqgdzybojqzlp7460tfyiv3do7mjypw;CSRF = R8OV2YBFTYMZFYJIT8O2HKBUOIJXXVPA CSRF=R8OV2YBFTYMZFYJIT8O2HKBUOIJXXVPA&email=wiener=wiener = wiener@normal-user.com

在这种情况下,如果网站包含任何cookie设置功能,攻击者可以再次执行CSRF攻击。beplay体育能用吗在这里,攻击者不需要获得自己的有效令牌。他们只是发明了一个令牌(如果要检查的话,也许以所需的格式),利用饼干设定的行为将饼干放入受害者的浏览器中,并在CSRF攻击中将其令牌送给受害者。

针对CSRF的基于参考者的防御

除了采用CSRF代币的防御措施外,某些应用程序利用了HTTP推荐人试图防御CSRF攻击的标题,通常是通过验证该请求源自申请自己的域名。这种方法通常效率较低,通常会绕过。

推荐人标头

HTTP Referer标头(在HTTP规范中无意中拼写错误)是一个可选的请求标头,其中包含链接到请求的资源的网页的URL。beplay体育能用吗当用户触发HTTP请求时,包括单击链接或提交表单时,通常会通过浏览器自动添加它。存在各种方法,允许链接页面保留或修改该值的值推荐人标题。这通常是出于隐私原因。

参考器的验证取决于标题存在

一些应用程序验证了推荐人标题在请求中存在时,但如果省略了标题,则跳过验证。

在这种情况下,攻击者可以以导致受害者用户的浏览器删除的方式制作其CSRF利用推荐人结果要求。有多种方法可以实现这一目标,但最简单的是在HTML页面中使用元件托管CSRF攻击的元标记:

可以规避推荐人的验证

一些应用程序验证了推荐人可以绕过的幼稚方式。例如,如果应用程序验证了该域中的域推荐人从期望值开始,然后攻击者可以将其作为其自身领域的子域:

http://vulnerable-beplay体育能用吗website.com.attacker-website.com/csrf-attack

同样,如果应用程序只是验证了推荐人包含其自己的域名,然后攻击者可以将所需值放置在URL中的其他位置:

http://attacker-beplay体育能用吗website.com/csrf-attack?vulnerable-website.com

笔记

尽管您可能能够使用BURP识别此行为,但您通常会发现,当您在浏览器中测试概念验证时,这种方法不再起作用。为了减少以这种方式泄漏敏感数据的风险,许多浏览器现在从推荐人默认情况下。

您可以通过确保包含您的利用的响应具有推荐人 - 政策:不安全的URL标题集(请注意推荐人在这种情况下,正确拼写正确,只是为了确保您要注意!)。这样可以确保将发送完整的URL,包括查询字符串。

免费注册以跟踪您的学习进度

通过Portswigger的网络安全学院工作的好处beplay官网可以赌beplay体育能用吗
  • 练习在现实目标上利用漏洞。

  • 记录您从学徒到专家的发展。

  • 看看您在我们的名人堂中排名。

已经有一个帐户?在此登录