笔者Burpsuite Web 安全学院的学习笔记
参考资料&Google翻译
跨站点伪造请求(CSRF)
在本节中,我们将解释什么是跨站点请求伪造,描述一些常见CSRF漏洞的示例,并解释如何防止CSRF攻击。
什么是CSRF?
跨站点请求伪造(也称为CSRF)是一个Web安全漏洞,攻击者可以利用该漏洞诱使用户执行他们不打算执行的操作。它允许攻击者部分规避同一原始策略,该策略旨在防止不同的网站相互干扰。

CSRF攻击有什么影响?
在成功的CSRF攻击中,攻击者会导致受害者用户无意中执行操作。例如,这可能是更改其帐户上的Email地址,更改其密码或进行资金转帐。根据操作的性质,攻击者可能会完全控制用户的帐户。如果受感染的用户在应用程序中具有特权角色,则攻击者可能能够完全控制所有应用程序的数据和功能。
CSRF如何生效?
为了使CSRF攻击成为可能,必须具备三个关键条件:
- 一个相关的操作。攻击者有理由诱使应用程序中发生某种操作。这可能是特权操作(例如,修改其他用户的权限)或对用户特定数据的任何操作(例如,更改用户自己的密码)。
- 基于Cookie的会话处理。执行该操作涉及发出一个或多个HTTP请求,并且该应用程序仅依靠会话cookie来标识发出请求的用户。没有其他机制可以跟踪会话或验证用户请求。
- 没有不可预测的请求参数。执行该操作的请求不包含攻击者无法确定或猜测其值的任何参数。例如,当使用户更改密码时,如果攻击者需要知道现有密码的值,则该功能不会受到影响。
例如,假设一个应用程序包含一个功能,该功能使用户可以更改其帐号的邮件地址。用户执行此操作时,将发出如下HTTP请求:
POST /email/change HTTP/1.1
Host: vulnerable-website.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 30
Cookie: session=yvthwsztyeQkAPzeQ5gHgTvlyxHfsAfE
email=wiener@normal-user.com
这符合CSRF所需的条件:
攻击者会对更改用户帐户上的Email地址的操作感兴趣。执行此操作后,攻击者通常将能够触发密码重置并完全控制用户的帐户。
该应用程序使用会话cookie来标识哪个用户发出了请求。没有其他令牌或机制来跟踪用户会话。
攻击者可以轻松确定执行操作所需的请求参数的值。
在满足这些条件的情况下,攻击者可以构建包含以下HTML的网页:
<html>
<body>
<form action="https://vulnerable-website.com/email/change" method="POST">
<input type="hidden" name="email" value="pwned@evil-user.net" />
</form>
<script>
document.forms[0].submit();
</script>

本文详细介绍了跨站点请求伪造(CSRF)的原理、危害、工作方式及如何构建攻击。讨论了CSRF攻击的影响,如改变用户帐户信息、密码重置等。并列举了多种CSRF漏洞,包括无防御、更换HTTP方法、无token验证、token未绑定到会话等。同时,提供了Burp Suite工具辅助构造和测试CSRF攻击,以及如何通过CSRF token和SameSite cookie等方法进行防护。
最低0.47元/天 解锁文章
&spm=1001.2101.3001.5002&articleId=110476843&d=1&t=3&u=e5419aed2c9d47c6b405e5f6e38299aa)
395

被折叠的 条评论
为什么被折叠?



