PortSwigger 跨站点请求伪造 (CSRF)

一、什么是跨站点请求伪造 (CSRF)

        跨站点请求伪造(也称为 CSRF)是一个 Web 安全漏洞,允许攻击者诱使用户执行他们不打算执行的操作。

二、如何利用跨站点请求伪造 (CSRF)

        1、没有防御措施的 CSRF 漏洞

(1)在 Burp Suite 中选择要测试或利用的请求。
(2)从右键,选择参与工具 / 生成 CSRF PoC。

(3)Burp Suite 将生成一些 HTML 来触发选定的请求(减去 cookie,这将由受害者的浏览器自动添加)

(4)调整CSRF PoC生成器中的各种选项,以微调攻击的各个方面。

(5)将生成的 HTML 复制到网页中,当从受害者从浏览器中查看该地址,将成功发出并发生所需操作。

        2、通过修改请求方法绕过令牌验证

        应用程序在使用 POST 方法时正确验证令牌,但在使用 GET 方法时跳过验证。

        3、通过缺省令牌参数方式绕过令牌验证

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

        4、当令牌未绑定到用户会话,存在绕过

        应用程序不会验证令牌是否属于发出请求的用户所在的同一会话。相反,应用程序维护它已颁发的令牌的全局池,并接受此池中显示的任何令牌,可通过重新构造本地令牌进行绕过。

        5、当令牌绑定到非cookie会话,存在绕过

        应用程序确实将 CSRF 令牌绑定到 cookie,但不绑定到用于跟踪会话的同一 cookie。当应用程序使用两个不同的框架时,很容易发生这种情况,一个用于会话处理,一个用于CSRF保护。可通过设置cookie中CSRF进行绕过。

html>
  
  
  
    

        6、当从 cookie 复制csfr令牌时,存在绕过

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


  
  
  
    

        7、通过更改referrer标头,进行绕过

        默认值: 一般浏览器的默认值是 no-referrer-when-downgrade
        no-referrer: 所有请求不发送 referrer
        no-referrer-when-downgrade: 当请求安全级别下降时不发送 referrer。目前,只有一种情况会发生安全级别下降,即从 HTTPS 到 HTTP。HTTPS 到 HTTP 的资源引用和链接跳转都不会发送 referrer。
        same-origin:对于同源的链接和引用,会发送referrer,其他的不会。
        origin:会发送 referrer,但只会发送源信息。源信息包括访问协议和域名。
        strict-origin:这个相当于 origin 和 no-referrer-when-downgrade 的 AND 合体。即在安全级别下降时不发送 referrer;安全级别未下降时发送源信息。
注意:这个是新加的标准,有些浏览器可能还不支持。
        origin-when-cross-origin:这个相当于 origin 和 same-origin 的 OR 合体。同源的链接和引用,会发送完全的 referrer 信息;但非同源链接和引用时,只发送源信息。
        strict-origin-when-cross-origin:这个比较复杂,同源的链接和引用,会发送 referrer。安全级别下降时不发送 referrer。其它情况下发送源信息。注意:这个是新加的标准,有些浏览器可能还不支持。        
        unsafe-url:无论是否发生协议降级,无论是本站链接还是站外链接,统统都发送 Referrer 信息。正如其名,这是最宽松而最不安全的策略。


  
  

  
    

        8、通过规避引用器的验证,进行绕过

        利用服务器标头设置:Referrer-Policy: unsafe-url  (无论是同源请求还是非同源请求,都发送完整的 URL(移除参数信息之后)作为引用地址。(最不安全的策略了))


  
  
  
    

你可能感兴趣的:(PortSwigger,靶场总结,csrf,前端,网络安全,web安全)