Web Security Academy 跨站点伪造请求(CSRF)

本文详细介绍了跨站点请求伪造(CSRF)的原理、危害、工作方式及如何构建攻击。讨论了CSRF攻击的影响,如改变用户帐户信息、密码重置等。并列举了多种CSRF漏洞,包括无防御、更换HTTP方法、无token验证、token未绑定到会话等。同时,提供了Burp Suite工具辅助构造和测试CSRF攻击,以及如何通过CSRF token和SameSite cookie等方法进行防护。
摘要由CSDN通过智能技术生成

笔者Burpsuite Web 安全学院的学习笔记

参考资料&Google翻译

Burpsuite Web 安全学院:Cross-site request forgery (CSRF)

跨站点伪造请求(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>

  </
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值