跨站请求伪造CSRF(Cross-site request forgery)

 

目录

一、什么是CSRF

二、可能存在CSRF攻击的三个条件

一个相关的动作

基于 Cookie 的会话处理

没有不可预测的请求参数

二、常见的CSRF攻击

        1、CSRF令牌的验证取决与请求方法

       2、CSRF令牌的验证取决与令牌是否存在

      3、CSRF令牌没有绑定到会话

      4、CSRF令牌绑定到非会话cookie

        5、CSRF令牌复制于COOKIE

        6、基于Referer的CSRF防御

                1)Referer的验证取决于是否存在

                2)可绕过的Referer


来自PortSwiggerr靶场

一、什么是CSRF


        跨站请求伪造(也称为 CSRF)是一种 Web 安全漏洞,允许攻击者诱导用户执行他们不打算执行的操作。它允许攻击者部分规避同源策略,该策略旨在防止不同网站相互干扰。

二、可能存在CSRF攻击的三个条件

  • 一个相关的动作

        应用程序中存在攻击者有理由诱导的操作。这可能是特权操作(例如修改其他用户的权限)或对用户特定数据的任何操作(例如更改用户自己的密码)。

  • 基于 Cookie 的会话处理

        执行该操作涉及发出一个或多个 HTTP 请求,并且应用程序仅依赖会话 cookie 来识别发出请求的用户。没有其他机制可用于跟踪会话或验证用户请求。

  • 没有不可预测的请求参数

        执行该操作的请求不包含攻击者无法确定或猜测其值的任何参数。例如,当导致用户更改密码时,如果攻击者需要知道现有密码的值,则该功能不会受到攻击。        

二、常见的CSRF攻击


        1、CSRF令牌的验证取决与请求方法


        某些应用程序在请求使用 POST 方法时正确验证令牌,但在使用 GET 方法时跳过验证。
在这种情况下,攻击者可以切换到 GET 方法来绕过验证并进行 CSRF 攻击:

GET /email/change?email=pwned@evil-user.net HTTP/1.1
Host: vulnerable-website.com
Cookie: session=2yQIDcpia41WrATfjPqvm9tOkDvkMvLmGET /email/change?email=pwned@evil-user.net HTTP/1.1
Host: vulnerable-website.com
Cookie: session=2yQIDcpia41WrATfjPqvm9tOkDvkMvLm


 

       2、CSRF令牌的验证取决与令牌是否存在

        某些应用程序在令牌存在时正确验证令牌,但如果省略令牌则跳过验证。
在这种情况下,攻击者可以删除包含令牌的整个参数(不仅仅是它的值)以绕过验证并进行 CSRF 攻击:

 

POST /email/change HTTP/1.1
Host: vulnerable-website.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 25
Cookie: session=2yQIDcpia41WrATfjPqvm9tOkDvkMvLm

email=pwned@evil-user.net


      3、CSRF令牌没有绑定到会话


        某些应用程序不会验证令牌与发出请求的用户是否属于同一会话。相反,应用程序维护它已发布的全局令牌池,并接受该池中出现的任何令牌。
在这种情况下,攻击者可以使用自己的帐户登录应用程序,获取有效令牌,然后在 CSRF 攻击中将该令牌提供给受害用户。


      4、CSRF令牌绑定到非会话cookie


        在上述漏洞的一个变体中,一些应用程序确实将 CSRF 令牌绑定到一个 cookie,但没有绑定到用于跟踪会话的同一个 cookie。当应用程序使用两个不同的框架时,很容易发生这种情况,一个用于会话处理,一个用于 CSRF 保护,它们没有集成在一起:

 

POST /email/change HTTP/1.1
Host: vulnerable-website.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 68
Cookie: session=pSJYSScWKpmC60LpFOAHKixuFuM4uXWF; csrfKey=rZHCnSzEp8dbI6atzagGoSYyqJqTz5dv

csrf=RhV7yQDO0xcq9gLEah2WVbmuFqyOq7tY&email=wiener@normal-user.com

        这种情况更难利用,但容易受到攻击。如果网站包含任何允许攻击者在受害者的浏览器中设置 cookie 的行为,则攻击是可能的。攻击者可以使用自己的帐户登录应用程序,获取有效的令牌和关联的 cookie,利用 cookie 设置行为将其 cookie 放入受害者的浏览器,并在 CSRF 攻击中将其令牌提供给受害者。


        5、CSRF令牌复制于COOKIE


             在上述漏洞的进一步变体中,一些应用程序不维护已颁发令牌的任何服务器端记录,而是在 cookie 和请求参数中复制每个令牌。验证后续请求时,应用程序只需验证请求参数中提交的令牌与 cookie 中提交的值是否匹配。这有时被称为针对 CSRF 的“双重提交”防御,并且被提倡是因为它易于实现并且避免了对任何服务器端状态的需要:```

 

POST /email/change HTTP/1.1
Host: vulnerable-website.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 68
Cookie: session=1DQGdzYbOJQzLP7460tfyiv3do7MjyPw; csrf=R8ov2YBfTYmzFyjit8o2hKBuoIjXXVpa

csrf=R8ov2YBfTYmzFyjit8o2hKBuoIjXXVpa&email=wiener@normal-user.com

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

        6、基于Referer的CSRF防御


        除了使用 CSRF 令牌的防御之外,一些应用程序使用 HTTPReferer标头来尝试防御 CSRF 攻击,通常是通过验证请求是否来自应用程序自己的域。这种方法通常不太有效,并且经常被绕过。


                1)Referer的验证取决于是否存在


          某些应用程序Referer会在请求中存在标头时验证标头,但如果标头被省略,则跳过验证。
在这种情况下,攻击者可以制作他们的 CSRF 漏洞利用,导致受害者用户的浏览器Referer在结果请求中丢弃标头。有多种方法可以实现这一点,但最简单的方法是在承载 CSRF 攻击的 HTML 页面中使用 META 标记:

<meta name="referrer" content="never">

                2)可绕过的Referer


        一些应用程序Referer以一种可以绕过的幼稚方式验证标头。例如,如果应用程序验证域中的域以Referer期望值开头,那么攻击者可以将其放置为他们自己域的子域:
 

http://vulnerable-website.com.attacker-website.com/csrf-attack

同样,如果应用程序只是验证Referer包含自己的域名,那么攻击者可以将所需的值放在 URL 的其他位置:

http://attacker-website.com/csrf-attack?vulnerable-website.com

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cross-Site Request Forgery (CSRF) Attack Lab是一个网络安全实验,旨在测试和演示跨站请求伪造攻击(CSRF)的原理和实践。实验中通过创建恶意网页和利用漏洞,攻击者可以伪造用户身份进行各种未经授权的操作,如修改个人资料、发送消息等。 在实验中,针对Elgg网络社交平台进行了CSRF攻击的演示。在Task 1中,可以观察到攻击者发送了HTTP请求并窃取了Alice的个人资料。在Task 4中,实验也提供了一种对抗CSRF攻击的方法。 对于问题中的具体内容,如果Bob想要对访问他恶意网页的任何人进行攻击,他无法直接通过恶意网页修改受害者的Elgg个人资料。这是因为要发送修改请求,需要知道受害者的id号,而在这种情况下,Bob并不知道访问者的id号。如果要攻击其他用户,Bob需要先获取其id并修改攻击的请求报文。 在CSRF攻击实验中,通过网络抓包可以看到攻击者的网站发送了添加好友的请求报文给Elgg服务器,使得攻击者成功添加了Boby为好友。这是通过伪造Alice的身份来实现的。 总结起来,Cross-Site Request Forgery (CSRF) Attack Lab是一个网络安全实验,通过演示和测试跨站请求伪造攻击的原理和实践,并提供了对抗CSRF攻击的方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Cross-Site Request Forgery (CSRF) Attack Lab网安实验](https://blog.csdn.net/l4kjih3gfe2dcba1/article/details/118705162)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值