正文
Web通用漏洞--CSRF
漏洞简介
CSRF(Cross Site Request Forgery, 跨站请求伪造/客户端请求伪造),即通过伪造访问数据包并制作成网页的形式,使受害者访问伪造网页,同时触发伪造的请求而达到攻击效果的一种手段。
- 用户首先登录网站A,生成可以对网站A进行操作的cookie信息等令牌身份验证等
- 在未退出网站A时,恶意网站B通过诱骗等方式使得用户访问网站B
- 当用户访问网站B的同时,网站B发送对网站A进行相关操作的数据包。即利用用户的身份向网站A进行相关操作。
- 此时网站A接收到网站B发送过来的数据包,并没有对该数据包进行额外足够安全的检验。以为是用户所进行的操作。
漏洞利用
利用该漏洞一般需要熟知目标网站的请求数据包,并针对数据包生成可以发送该数据包格式或内容的网页。
无防护利用
利用条件:
1、需要请求伪造数据包
2、无过滤防护 有过滤防护能绕过
3、受害者需要触发(诱惑)
在实战中,一般为得到目标网站的源码后,进行复现,然后抓取攻击数据包并对其进行修改,然后写出或生成可以提交该数据包的网页。
生成网页方法:BurpSuite->Engagement tools->Generate CSRF Poc
有防护绕过
- 同源检测(referer)
http请求头中Referer的含义和作用
- CSRFtoken检测
CSRFtoken在个人理解来说就是当浏览器执行某些需要防止CSRF攻击行为时,在向服务器发送请求的同时会向服务器发送生成CSRFtoken的请求包,服务器生成一串不规则的CSRFtoken令牌交给浏览器,浏览器在执行该功能时将CSRFtoken令牌夹带在数据包中向服务器发送执行该功能的数据包,服务器收到数据包后检测CSRFtoken值正确后再进行相关操作。如此循环便保证数据包的唯一性,防止CSRF攻击
- 绕过方式
- 将CSRFtoken值进行复用(代码逻辑不严谨)
- 将CSRFtoken项进行删除(代码逻辑不严谨)
- 将CSRFtoken项进行置空(代码逻辑不严谨)
以上内容仅作参考学习,如有瑕疵或错误,希望各位师傅们斧正,感谢阅读。