CSRF,全称为Cross-Site Request Forgery,即跨站请求伪造。这是一种攻击方式,它利用用户已登录的身份,在用户毫不知情的情况下,以用户名义执行非法操作。简单来说,就是攻击者诱导用户访问一个恶意网页,该网页利用用户当前的会话(例如,用户登录了一个网站后的cookie信息),在后台向另一个网站发起非法请求。
CSRF攻击也成为"one click"攻击。
攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等等。
csrf分类一般分为站内、站外两种类型。
在一些敏感的操作中(如修改密码、添加用户等),在php语言中,本来要求用户从表单提交发起POST请求传递参数给程序,但是由于使用了 $_REQUEST 等变量,程序除支持接收POST请求传递的参数外也支持接收GET请求传递的参数,这样就会为攻击者使用CSRF攻击创造条件。
有时为了提高用户的体验性,可能没有对一些操作做,做任何限制,所以攻击者可以事先预测并设置请求的参数,在站外的Web页面里编写脚本伪造文件请求,或者和自动提交的表单一起使用来实现GET、POST请求,当用户在会话状态下点击链接访问站外Web页面,客户端就被强迫发起请求。
检测工具:burp、csrfTester
扫描器:AWVS、Appscan、等。这种误报率很高。
1.创建文本文件(xxx.txt)
2.鼠标放在文件上,右键添加到压缩文件
3.在弹出的窗口中勾选创建自解压格式压缩文件
4.切换到高级选项卡,单击自解压文件选项,在弹出的对话框,切换到安装选项卡
5.解压缩后运行,下方的文本框中输入网址(http://www.xxx.com)
6.单击确定,再次单击确定,到这里就制作好了自解压缩包
视频演示
结合靶场演示通过自解压缩文件删除用户
打开Burp抓包工具,开启代理,拦截数据包,点击删除操作,获取数据包。
获取到下方网址
http://172.28.25.41/pikachu/vul/overpermission/op2/op2_admin.php?id=94
在创建自解压文件时,将此网址粘贴到解压后运行文本框中。
前提是管理员账户登录状态,双击自解压缩文件。
单击安装看效果
1.登录管理员账户(admin)
2.单击管理中心按钮
3.输入管理员密码,点击提交按钮
4.单击 UCenter 选项卡
5.登录 UCenter用户管理中心
6.左侧选择数据备份选项
7. 抓取数据包
8.构造备份链接
9.到这里,退出管理员账户并清除痕迹,登录普通用户
10.进入板块,单击发帖
11.发帖内容随便写,主要是将构造好的备份网址,利用网络图片的方式插入到帖子中。
我们先看一下Discuz备份目录中的文件
12.退出普通用户,登录管理员用户,步骤按1到5步操作。
13.进入csrf版块
14.浏览刚才普通用户发布的贴子。
15.在查看帖子的同时,构造的链接被成功执行。
16.通过浏览器直接访问备份文件,下方地址,看效果。
数据全部被你拿到了。
- 验证HTTP Referer字段
- 在请求地址中添加token并验证
- 在HTTP头中自定义属性并验证
- 在服务端区严格区分好POST与GET的数据请求
- 使用验证码或者原密码确认方式进行
验证HTTP Referer字段
通过HTTP Referer,当前的网页可以检查访客从哪里而来,这也常被用来对付伪造的跨网站请求。Referer可以用来判断请求来源是否合法,从而防止恶意攻击。
在请求地址中添加token并验证
在HTTP请求中以参数的形式加入一个随机产生的token,并在服务器端建立一个拦截器来验证这个token,如果请求中没有token或者token内容不正确,则认为可能是CSRF攻击而拒绝该请求。
在HTTP头中自定义属性并验证
自定义属性的方法也是使用token并进行验证,和前一种方法不同的是,这里并不是把token以参数的形式置于HTTP请求之中,而是把它放到HTTP头中自定义的属性里。通过XMLHttpRequest这个类,可以一次性给所有该类请求加上csrftoken这个HTTP头属性,并把token值放入其中。这样解决了前一种方法在请求中加入token的不便,同时,通过这个类请求的地址不会被记录到浏览器的地址栏,也不用担心token会通过Referer泄露到其他网站。
在服务端区严格区分好POST与GET的数据请求
如在asp网站中不要使用Request来直接获取数据。同时建议不要用GET请求来执行持久性操作(数据添加、更新、删除等动作)。
使用验证码或者原密码确认方式进行
这种方法很有效,但是用户体验就差了些。
用户上网时,不要轻易点击网络论坛、聊天室、即时通讯工具或电子邮件中出现的链接或者图片;及时退出长时间不使用的已登录账户,尤其是系统管理员,应尽量在登出系统的情况下点击未知链接和图片。除此之外,用户还需要在连接互联网的计算机上安装合适的安全防护软件,并及时更新软件厂商发布的特征库,以保持安全软件对最新攻击的实时跟踪。
用户可以借助第三方的专业安全设备加强对CSRF漏洞的防御。 H3C公司的IPS产品采用了
特殊技术,支持对部分常用系统的CSRF漏洞攻击进行检测和阻断。
CSRF攻击的本质是攻击者伪造了合法的身份,对系统进行访问。如果能够识别出访问者的伪造身份,也就能识别CSRF攻击。