1、定义
csrf,cross script request forgery跨站请求伪造,是受害者用户在登录目标网站A后,攻击者基于社工手段使其在同主机同浏览器环境下,访问攻击者控制的网站B,网站B的页面伪造请求通过该浏览器提交到网站A,同时携带对网站A保存在浏览器中的cookie登录凭证,使得网站A的服务端接收后认为是用户自身发送,且是登录后经过身份验证,从而造成危害。
(1)登录
csrf发生在用户登录后,且必须是cookie登录凭证,不能在url或请求中包含token,也不能在包含其他请求头部内存在类似token的数据。
(2)危害
可以模拟用户操作,从而进行账号操作,但是一般是增改删业务,而不涉及查询。
2、分类
按照请求类型,可以分为get型和post型。
按照攻击方式,可以分为html csrf攻击,json hijacking和flash攻击。
2.1 html csrf
<link href="">
<img src="">
<img lowsrc="">
<img dynsrc="">
<meta http-equiv="refresh" content="0;url=">
<iframe src="">
<frame src="">
<script src="">
<bgsound src="">
<embed src="">
<video src="">
<audio src="">
<a href="">
<table background="">
...
<!-- css样式中-->
@import ""
background:url("")
...
还可以通过js动态生成的标签对象或css对象发起的get请,而发出post请求只能通过form提交方式。
2.2 json hijacking
json劫持 - 挖洞404 - 博客园 (cnblogs.com)
2.3 flash csrf
flash同样遵循同源策略,发起的csrf是基于actionscript脚本,可以
- 跨域获取隐私数据
- 跨域提交数据操作
3、利用过程
攻击者发现目标网站某处存在csrf漏洞,直接创建或者控制网站B,创建页面使访问者执行csrf的脚本
在受害者登录目标网站A后,通过邮件、短信等方式使其访问网站B的创建页面
4、测试步骤
(1)登录
(2)检查请求是否存在token,以及非常规的请求字段
(3)ajax一般不作为csrf测试,ajax的跨域并不携带cookie
(4)检查referer和origin是否在服务端被检查
5、防护
(1)设置token机制,或者非常规的请求字段
(2)ajax交互
(3)严格检查referer和origin字段,一般习惯拆分各部分
标签:web,请求,登录,网站,漏洞,token,csrf,攻击者 From: https://www.cnblogs.com/wd404/p/17322472.html