CSRF学习

Posted zhangqianxi

tags:

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

前提环境:网站存在CSRF漏洞(也就是过于相信访问请求,只判断了用户是否存在cookie,并未判断请求的发起者)

CSRF攻击原理,用户A需要转账,用户A正常向银行网站发送请求登录,登录成功后银行网站服务端把用户的cookie返回给浏览器,浏览器把cookie保存到本地,方便用户下次登录,这时候用户在没有退出银行网站的情况下,误访问了黑客网站,因为本地已经存在了A登录银行网站的cookie,这时候,黑客网站在用户不知情的情况下,独自携带存在本地的cookie向银行网站发送转账请求,银行网站一看,一校验cookie,对啊,确定这就是A发送过来的,遂在A不知情的情况下开始转账,入侵结束。有人会问,黑客网站什么时候,通过什么样的方式向银行发送的请求呢?这里假设银行转账是用过post请求,

localhost:5000/mm.html 就是黑客网站

技术图片

 

 这个网站看起来很简陋,什么都没有,实际上,只要你在本地存有cookie,并且点开了这个网站,银行就会向指定用户转账100万

查看代码

技术图片

 

 查看源码可以看到,黑客隐藏了一个form表单,只要刷新这个网站,黑客网站就会携带cookie向银行网站发起转账请求,因为只校验了cookie是否正确,银行网站接到后校验成功就会执行转


防御方法:

 

 技术图片

 

目前前三种方法并不是特别的有效,只能过滤一部分的CSRF攻击

第一种黑客可以构造post请求进行攻击

第二种黑客可以破解部分简单类型的验证码进行攻击

第三种黑客可以使用部分工具,比如说burpsuite进行修改refer进行攻击

第四种是目前较为有效,是普遍使用的防御CSRF攻击的主要方法,即加入token

 技术图片

token可以加在form表单中,也可以加在header头中,可以看到,加入token之后,刷新网站,每次刷新之后网站的token都会改变

技术图片

 

 

技术图片

 

 

技术图片

 

 

 

以上是关于CSRF学习的主要内容,如果未能解决你的问题,请参考以下文章

技术分享CSRF 攻击场景分析与重现学习

python学习-- Django Ajax CSRF 认证

CSRF漏洞的利用与学习

Django学习手册 - csrf

通过挖掘某某 src 来学习 json csrf

CSRF学习