csrf漏洞介绍
一、定义
Cross-Site Request Forgery跨站请求伪造
理解:
1.跨站点的请求
2.请求是伪造的。(假装可信)
它是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法
二、定义
csrf漏洞的成因就是网站的cookie在浏览器中不会过期,只要不关闭浏览器或者退出登录那以后只要是访问这个网站,都会默认你已经登录的状态。而在这个期间,攻击者发送了构造好的csrf脚本或包含csrf脚本的链接,可能会执行一些用户不想做的功能(比如是添加账号等)。这个操作不是用户真正想要执行的
三、CSRF模型
1.用户登录受信任网站A,并在本地生成Cookie
2.在不登出A的情况下,访问危险网站B
CSRF攻击过程
1.用户登录受信任网站A,并在本地生成Cookie
2.在不登出A的情况下,访问危险网站B
3.执行危险网站b上面的代码
4.csrf攻击实验
定义
正常的CSRF攻击,增删改等操作(基于操作的csrf )另类的CSRF :JSONP、 CORS、Flash跨域劫持(基于文件读取的csrf )
本质
CSRF的本质就是在不知情的情况下执行请求
根据请求分为:get类型csrf,post类型csrf
利用
1.GET型csrf
GET类型的CSRF利用非常简单,只需要一个HTTP请求,一般会这样利用:
<img src="xxx">
2.post型csrf
这种类型的CSRF利用起来通常使用的是一个自动提交的表单,如:
<form action="xxx" method=POST>
<input type="xxx" name="xxx" value="xxx"> //name为参数 value为参数的值
<input type="xxx" name="xxx" value="xxx">
<input type="xxx" name="xxx" value="xxx">
</form>
<script> document.forms[0].submit();</script> //自动提交表单
csrf漏洞利用
DVWA(CSRF)实验
csrf漏洞的寻找
1.关注数据包
数据包的几个关键字段,是否根据cookie
来判断请求包
检查
Referer
Auth
CSRFtoken
同源策略
同源策略:
同源策略是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源。所以xyz.com下的js脚本采用ajax读取abc.com里面的文件数据是会被拒绝的。
同源策略限制了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的重要安全机制。
跨域问题:
由于同源策略的影响,当我们从一个域名的网页去请求另个域名的资源时,就无法成功获取资源。如果我们要想成功获取资源,那么就要用到跨域。跨域解决方案:isonp、cors、postMessage
cors介绍
CORS的全称是跨源资源共享,是一种aiax跨域请求资源的方式,支持现代浏览器,IE支持到10以上。cors的实现方式很简单,当使用XMLHttpRequest发送请求时,浏览器发现该请求不符合同源策略,会给该请求加一个请求头:Origin后台进行一系列处理,如果确定接受请求则在返回结果中加入一个响应头:Access-Control-Allow-Origin;浏览器判断该相应头中是否包含 Origin 的值,如果有则浏览器会处理响应,如果不包含浏览器直接驳回,这我们就可以拿到响应数据时我们无法拿到响应数据
Cors:
在配置了cors的前题下,当你登录网站A,并跨域访问网站B的时候,浏览器判断你的操作是跨域,这时候会在数据包里面加个origin字段,内容为:orgin:b.com,这样你就能跨域了,当cors的配置错误时就会产生cors漏洞
jsonp介绍:
JSONP是通过script标签加载数据的方式去获取数据当做JS代码来执行提前在页面上声明一个函数,函数名通过接口传参的方式传给后台,后台解析到函数名后在原始数据上[包裹]这个函数名,发送给前端。换句话说,JSONP 需要对应接口的后端的配合才能实现。要注意JSONP只支持GET方式的请求,不支持
POST请求。script标签可以加载其它域下的is,我们可以利用这个特性实现从其它域下获取数据。通过