CSRF(跨站请求伪造)

Posted excellent-person

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CSRF(跨站请求伪造)相关的知识,希望对你有一定的参考价值。

1.CSRF简介

  CSRF的全名是Cross Site Request Forgery(跨站请求伪造),是一种诱使用户访问一个页面,然后盗用该用户身份在第三方站点里执行一次操作的攻击手段,其本质原因在于重要操作的所有参数都是可以被攻击者猜测到的。

2.CSRF检测

  2.1 收集CSRF有利用价值的点(需要权限的)

    csrf由于其利用的特殊性,并不需要将整个站点的所有数据包均测试一遍,只需测试有csrf价值的点(需要权限的即时性的操作)即可

    如:转账、购物、修改密码、删除、发布内容...

  2.2 GET类型的CSRF检测

         如果有token等验证参数,先去掉参数尝试能否正常请求。如果可以,即存在CSRF漏洞。

  2.3 POST类型的CSRF检测

        如果有token等验证参数,先去掉参数尝试能否正常请求。如果可以,再去掉referer参数的内容,如果仍然可以,说明存在CSRF漏洞,可以利用构造外部form表单的形式,实现攻击。如果直接去掉referer参数请求失败,这种还可以继续验证对referer的判断是否严格,是否可以绕过。

3.CSRF实例

  工具:burpsuite中Engagement tools的Generate CSRF PoC模块

  3.1 抓取修改密码的数据包,发送到Repeater模块

技术图片

  3.2 右击选中Engagement tools,CSRF POC

技术图片

  3.3 把构造好的html代码复制出来,保存为html格式

技术图片

  3.4  用浏览器打开保存的html文件,点击Submit request按钮

技术图片

  3.5 修改成功

技术图片

4.CSRF防御

  4.1 验证码:验证码是对抗CSRF最简介有效的防御手段,但处于用户体验考虑,网站不能给所有的操作都加上验证码。

  4.2 referer:用于检查请求是否来自合法的源,referer的缺陷在于,服务器并非什么时候都可以取到referer,很多用户处于隐私保护的考虑,限制了referer的发送

  4.3 token:产生一个随机数,使攻击者无法构造一个完整的URL。

5.学习链接

先知论坛:https://xz.aliyun.com/t/6128

 红日安全:https://github.com/hongriSec

 

  

 

以上是关于CSRF(跨站请求伪造)的主要内容,如果未能解决你的问题,请参考以下文章

CSRF跨站请求伪造

Django--CSRF 跨站请求伪造

CSRF跨站请求伪造

跨站请求伪造CSRF原理

对CSRF(跨站请求伪造)的理解

21)django-csrf(跨站请求伪造)