Web通用漏洞--CSRF
阅读原文时间:2023年08月14日阅读:4

Web通用漏洞--CSRF

CSRF(Cross Site Request Forgery, 跨站请求伪造/客户端请求伪造),即通过伪造访问数据包并制作成网页的形式,使受害者访问伪造网页,同时触发伪造的请求而达到攻击效果的一种手段。

  1. 用户首先登录网站A,生成可以对网站A进行操作的cookie信息等令牌身份验证等
  2. 在未退出网站A时,恶意网站B通过诱骗等方式使得用户访问网站B
  3. 当用户访问网站B的同时,网站B发送对网站A进行相关操作的数据包。即利用用户的身份向网站A进行相关操作。
  4. 此时网站A接收到网站B发送过来的数据包,并没有对该数据包进行额外足够安全的检验。以为是用户所进行的操作。

利用该漏洞一般需要熟知目标网站的请求数据包,并针对数据包生成可以发送该数据包格式或内容的网页。

无防护利用

利用条件:

1、需要请求伪造数据包

2、无过滤防护 有过滤防护能绕过

3、受害者需要触发(诱惑)

在实战中,一般为得到目标网站的源码后,进行复现,然后抓取攻击数据包并对其进行修改,然后写出或生成可以提交该数据包的网页。

生成网页方法:BurpSuite->Engagement tools->Generate CSRF Poc

有防护绕过

  1. 同源检测(referer)

    http请求头中Referer的含义和作用

  • 只检测referer字段中是否具有xx.xx.xx.xx网址

    • 绕过方式:

      可以采用将poc放入名为该关键字的文件夹下,当用户点击进行跳转时,referer字段中将带有关键字,注意必须是点击过来,如果访问方式是直接访问,那么referer中将不带目录名

  • 对referer字段全部检测

    • 绕过方式:

      配合XSS或文件上传,将触发数据包的JS文件插入目标网站中,或将触发数据包的html文件进行上传

  • 逻辑不严谨

    • 绕过方式:

      将referer字段进行置空或删除

    • 在站点很多功能需要实现的时候,并没有需要检测referer来源头的必要,开发人员在开发过程中并没有将关键功能进行严格referer检测,便造成了referer头可有可无。

  1. CSRFtoken检测

    CSRFtoken在个人理解来说就是当浏览器执行某些需要防止CSRF攻击行为时,在向服务器发送请求的同时会向服务器发送生成CSRFtoken的请求包,服务器生成一串不规则的CSRFtoken令牌交给浏览器,浏览器在执行该功能时将CSRFtoken令牌夹带在数据包中向服务器发送执行该功能的数据包,服务器收到数据包后检测CSRFtoken值正确后再进行相关操作。如此循环便保证数据包的唯一性,防止CSRF攻击

  • 绕过方式

    • 将CSRFtoken值进行复用(代码逻辑不严谨)
    • 将CSRFtoken项进行删除(代码逻辑不严谨)
    • 将CSRFtoken项进行置空(代码逻辑不严谨)

以上内容仅作参考学习,如有瑕疵或错误,希望各位师傅们斧正,感谢阅读。