CSRF漏洞详细解读

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

概述

CSRF一 CSRF介绍1.什么是CSRF2.CSRF漏洞危害二 CSRF的三种漏洞1.GET类型CSRF2.POST类型CSRF3.Token类型CSRF三 靶场演示四 CSRF漏洞修复方法修复方案(1)验证http referer字段(2).在请求地址中添加token并验证(3)在http头中⾃定义属性并验证(4)其他防御⽅法五 小结一 CSRF介绍1.什么是CSRFCSRF(Cross-site request forgery)跨站请求伪造,也被称为"One Click Attack"或者Se

一 CSRF介绍

1.什么是CSRF

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

在这里插入图片描述


图片来源,点击跳转

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攻击,只是⼀定程度上增加了攻击难度

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

@L_502_34@五 小结

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

总结

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

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

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

PHP文章

“Ruby on Rails已死”言论甚嚣尘上后的三年,GitLab还没放弃它!
三分钟带各位揭秘黑客究竟是什么,以及想要成为黑客都需要具备哪些能力?
菜刀流量特征(最开始是明文传输,后来采用base64加密):PHP类WebShell链接流量如下图:第一:“eval”,eval函数用于执行传递的攻击payload,这是必不可少的;第二:(base64_decode($_POST[z0])),(base64_decode($_POST[z0]))将攻击payload进行Base64解码,因为菜刀默认是使用Base64编码,以避免被检测;第三:&amp;z0=QGluaV9zZXQ...,该部分是传递攻击payload,此参数z0对应$_
一、PHP开发 登录页面1.数据库搭建先在mysql数据库中创建一个test数据库login表:设置如下几个字段:id : 它是唯一的,类型为 int ,并选择主键。uesrname : 用户名,类型为 varchar, 长度为30。password : 密码,类型为 varchar, 长度为30。添加一个用于测试的用户名和密码插入了一个数据username为22222; password为222222.验证码发表一个产生png图片验证码的基本图像:1、产生一张png的图片..
文章目录前言第一章 PHP语言学习介绍1.1 PHP部署安装环境1.2 PHP代码工具选择第二章 PHP代码基本语法2.1 PHP函数知识介绍2.2 PHP常量变量介绍2.2.1 PHP变量知识:2.2.2 PHP常量知识:2.3 PHP注释信息介绍2.4 PHP数据类型介绍2.4.1 整形数据类型2.4.2 布尔数据类型2.4.3 字符串数据类型2.4.4 浮点型数据类型2.4.5 PHP数据类型之查看和判断数据类型2.5 PHP流程控制语句2.6 PHP算数运算方法2.6.1 PHP程序自加自减运算2.
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、文件目录二、管理员界面相关代码(PHP+CSS)1.admin.php2.admin.css三、增加功能四、删除功能(delete.php)五、多选删除功能(checkdelete.php)六、修改功能(insert.php)七、查询功能(search.php)八、数据库内容前言提示:本文采用PHP对数据库进行操作:本文就介绍了PHP实现对MySQL数据库的增删改查操作基础内容。提示:以下是本篇文章正文内容,下面
要求:完成以下页面的制作1、login.php:登录页面,存在权限类别(user和admin),登录成功后重定向到admin.php/user.php。2、admin.php:admin用户登录后访问的页面,只有admin用户登录后能够访问,若为非admin权限用户需重定向到登录页面。3、user.php:user用户登录后访问的页面,只有user用户登录后能够访问,若为非user权限用户需重定向到登录页面。4、logout.php:退出登录,退出登录后将重定向到登录页面。5、reg.
微信公众号搜索 “ 程序精选 ” ,选择关注!
微信公众号搜 "程序精选"关注