CSRF漏洞详细解读

编程之家收集整理的这篇文章主要介绍了CSRF漏洞详细解读编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

一 CSRF介绍

1.什么是CSRF

CSRF(Cross-site request forgery)跨站请求伪造,也被称为"One Click Attack"或者Session
RIDing,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装成受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。
个人理解:也就是说,你和用户端都在用同一个网站注册了账号,但是这个网站恶意代码的过滤做的不是那么的干净,可以伪造一些命令,比如说修改账户密码吧,首先我们要知道@R_404_6157@是网站服务器发送请求,服务器响应返回给你,你在自己的电脑上发现修改页码页面存在漏洞,在网址上输入恶意修改代码,再将这个恶意网址发给别的用户的时候,当这个用户点击这一串链接,在不知情的情况下,已经把这个的密码修改了,用户却不知道。这样我们就可以获得这个用户的帐号了。那么如果是银行出现这个漏洞,后果可想而知。

在这里插入图片描述


图片来源,点击跳转

2.CSRF漏洞危害

(1)可修改用户信息 (2)丢失用户敏感信息 (3)执行恶意代码 (4)个人财务被盗

二 CSRF的三种漏洞

1.GET类型CSRF

这种类型的CSRF一般是由于程序员安全意识不强造成的。GET类型的CSRF利用非常简单,只需要一个http请求,所以,一般会这样利用:

<img src=http://xxx.cn/csrf.PHP?xxx=number />

在访问含有这个img页面后,浏览器自动http://xxx.cn/csrf.PHP?xxx=number发出一次http请求。xxx.cn就会收到包含受害者登录信息的一次跨域请求。所以,如果将该网址替换为存在GET型CSRF的地址,就能完成攻击了。

2.POST类型CSRF

这种类型的CSRF危害没有GET型的大,利用起来通常使用的是一个自动提交的表单。 这里有很多方法构造代码,如:
1.在自己能力很强的情况下,可以选择自己编写
2.也可以通过burp抓包工具poc构造恶意代码

3.Token类型CSRF

Token就很简单了,直接抓包在抓到的包中找到token,在token要传输的命令上进行代码修改,释放恶意包,如果达到了咱们预计的效果就可以判定是存在token类型的CSRF漏洞

三 靶场演示

这里准备pikachu靶场进行演示,piikachu靶场技术友们都应该会搭建吧,如果不会我这里推荐小皮面板,下载后简单配置就可以本地使用靶场,各种靶场。

需要用到的工具:burp、小皮面板
小皮面板下载链接
burp下载链接
burp使用教程

在这里我就不演示了我计划后期要专门出一个比较全面的实战文章

四 CSRF漏洞修复方法

修复方案

(1)验证http referer字段

根据http协议,在http头中有⼀个字段叫Referer,它记录了该http请求的来源地址。在通常情况下,访问⼀个安全受限页⾯的请求必
须来⾃于同⼀个⽹站。

(2).在请求地址添加token并验证

CSRF攻击之所以能够成功,是因为攻击者可以伪造⽤户的请求,该请求中所有的⽤户验证信息都存在于cookie中,因此攻击者可以在不知
道这些验证信息的情况下直接利⽤⽤户⾃⼰的cookie进⾏安全验证。所以,抵御CSRF攻击的关键在于在请求中放⼊攻击者所不能伪造的信
息,并且该信息不存在于cookie中。因此,可以在http请求中以参数的形式加⼊⼀个随机产⽣的token,并在服务器建⽴⼀个拦截器来验证
这个token,如果请求中没有token或者token内容不正确,则认为可能是CSRF攻击⽽拒绝该请求。

(3)在http头中⾃定义属性并验证

⾃定义属性的⽅法也是使⽤token并进⾏验证,和前⼀种⽅法的不同的是,不是把token以参数的形式置于http请求中,⽽是把它放在http
头中⾃定义的属性中。通过XMLhttpRequest这个类,可以⼀次性给所有该类请求加上csrftoken这个http属性,并把token放⼊其中。
这样解决了前⼀种⽅法在请求中加⼊token的不便,同时,通过这个类请求的地址不会被记录到浏览器地址栏,也不⽤担⼼token会通过

referer泄露⽹站地址

(4)其他防御⽅法

<1>CSRF攻击是有条件的,当⽤户访问恶意链接时,认证的cookie仍然有效,所以当⽤户关闭页⾯时要及时清除认证cookie,对⽀持tab
模式(新标签打开⽹页)的浏览器尤为重要。
<2>尽量少⽤或不使⽤request()类变量获取参数指定request.form()还是request.querystring(),这样有利于阻⽌CSRF漏洞攻击,此⽅法只不能完全防御CSRF攻击,只是⼀定程度上增加了攻击难度

这里是大佬总结的,我引用一下,详情点击此处

五 小结

首先,这个漏洞在现实中实现是很有困难的,一般做白盒测试也基本上只是做一些简单的信息修改,看一看效果,其次这个漏洞的危害很大,所以说,基本上开发人员都开始渐渐注意到一些常规漏洞,但是实际上没有绝对的安全,但是技术友们不要因为这个原因就任意渗透,遵守网络安全

解锁查看全部内容

付费后查看完整内容
限时 微信扫码支付 ¥9.9 19.9

总结

以上是编程之家为你收集整理的CSRF漏洞详细解读全部内容,希望文章能够帮你解决CSRF漏洞详细解读所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

PHP相关文章

零基础小白,到就业!入门到入土的网安学习路线!在各大平台搜的网安学习路线都太粗略了。。。。看不下去了!我把自己报班的系统学习路线,整理拿出来跟大家分享了!点击下图,福利!建议的学习顺序:一、网络安全学习普法(心里有个数,要进去坐几年!)1、了解并介绍《网络安全法》2、《全国人大常委会关于维护互联网安全的决定》3、《中华人民共和国计算机信息系统安全保护条例(2011 年修正)》4、《中华人民共和国计算机信息网络国际联网管理暂行规定》5、《计算机信息网络国际联网安全保护管理办法》6、《互联
使用数组构成 完全二叉树,来实现 堆 数据结构。
1、编写hello world脚本在这里插入代码片2、通过位置变量创建 Linux 系统账户及密码在这里插入代码片3、备份日志在这里插入代码片4、一键部署 LNMP(RPM 包版本)在这里插入代码片5、监控内存和磁盘容量,小于给定值时报警在这里插入代码片6、猜数字游戏在这里插入代码片7、检测本机当前用户是否为超级管理员,如果是管理员,则使用 yum 安装 vsftpd,如果不是,则提示您非管理员(使用字串对比版本)在这里插入代码片8、检测本机当前用户是否为超级管理员
三分钟带各位揭秘黑客究竟是什么,以及想要成为黑客都需要具备哪些能力?
先看演示~示例图:Ps.本人有点懒哈~ 就输出个成功算了吧~PHP实现登录注册index.php (首页)login.php (登录)register.php (注册)代码里面注释写很详细了哦~ 废话不多说 直接上代码~index.php代码:&lt;!DOCTYPE html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset="utf-8"&gt;&lt;meta name="viewport" content="width=
一、PHP开发 登录页面1.数据库搭建先在mysql数据库中创建一个test数据库login表:设置如下几个字段:id : 它是唯一的,类型为 int ,并选择主键。uesrname : 用户名,类型为 varchar, 长度为30。password : 密码,类型为 varchar, 长度为30。添加一个用于测试的用户名和密码插入了一个数据username为22222; password为222222.验证码发表一个产生png图片验证码的基本图像:1、产生一张png的图片..
文件上传漏洞一、1.什么是文件上传(1)定义(2)原理2.文件上传漏洞的危害(1) 危害(2)产生危害的原因二、文件上穿漏洞分类1.客户端校验2.黑名单绕过(1)扩展名绕过(2)后缀大小写绕过(3)双层后缀绕过(4)空格绕过(5)点绕过(6)上传.htaccess(7)::$DATA绕过3.白名单绕过(1)web解析绕过(2)00截断绕过(3)mime文件绕过三、条件竞争什么是条件竞争四、二次渲染1.什么是二次渲染2.二次渲染演示五、漏洞修复1.漏洞修复的方法六、小结一、1.什么是文件上传(1)定义文
微信公众号搜索 “ 程序精选 ” ,选择关注!
微信公众号搜 "程序精选"关注