当前位置:网站首页>CSRF漏洞分析
CSRF漏洞分析
2022-07-06 10:21:00 【xiaochuhe.】
警告
请勿使用本文提到的内容违反法律。
本文不提供任何担保
目录
参考:合天网安实验室-专业提供网络安全\信息安全在线实验服务的网络靶场
一、预备知识——cookie简介
当前主流的Web应用都是采用Cookie方式来保存会话状态,但是浏览器在引入Cookie时却忽视了一项非常重要的安全因素,即从WEB页面产生的文件请求都会带上COOKIE。只要请求域与Cookie信息所指定的域相一致,无论是访问Web页面,还是请求图片,文本等资源,用户在发出请求时都会带上Cookie。下图抓包展示了我们在访问百度主页时所附带发送的Cookie信息:
注:Cookie的这一特性使得用户始终以登录的身份访问网站提供了便利,但同时,也方便了攻击者盗用身份信息执行恶意行为。
二、漏洞简介
CSRF(Cross-site request forgery)跨站请求伪造,也被称为“one click attack”或者session riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。CSRF通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。
下图是一次完整的CSRF攻击示意图。用户登录并访问了一正常网站,登录成功后,网站返回用户的身份标识Cookie给用户。当用户访问到恶意网站时,恶意网站强制用户去向正常网站发送恶意请求。由于用户此时拥有正常网站的Cookie,所以就相当于攻击者盗用了用户身份,去访问了正常(目标)网站。
一次完整的CSRF攻击,需要受害用户需要完成两个步骤:
- 登录正常网站,并在本地生成Cookie。
- 在不退出正常网站的情况下,访问恶意网站。
三、实验环境介绍
一台机器部署正常网站(留言板):10.1.1.189
一台机器部署恶意网站 :10.1.1.23
四、实践漏洞学习
(一)基于Get形式的CSRF攻击
1.打开留言板,输入用户ID admin与密码 123456 登录:
2.点击添加留言按钮进入留言添加页面,按F12按钮打开Chrome浏览器的调试工具(或打开其他等效的Http调试软件),切换到Network标签一栏,选中Preserve Log选项,准备抓取留言数据包。 在输入框中分别输入标题和内容,点击add按钮。在调试窗口中点击”add.php?title=…”一项查看刚才发送留言请求的Http协议内容,如下图所示:
从抓包截图中可以看到,我们在留言板中输入的内容,附在页面请求地址中发给了服务器,这种参数字段存放在URL中的请求叫做GET请求。即我们首先尝试的是基于GET请求形式的CSRF攻击,下节会介绍POST请求形式的CSRF攻击。 同时我们发现用户在添加留言请求中,附带了用户身份标识Cookie字段。当然这里为演示用,我们直接把明文用户名和密码当作了Cookie值。
4. 登录恶意网站并查看CSRF攻击效果,用户在浏览器中新建一标签页,访问恶意网站: http://10.1.1.23/csrf-get-attacker/attacker.html我们发现恶意网站表面看上去就是一个正常的网页,但事实上恶意网站在后台已经向用户下发了恶意脚本,该脚本利用了之前用户登录留言板所保存的Cookie信息,冒充用户在留言板上进行留言。
5.重新访问留言板网站: http://10.1.1.189/csrf-get-target/list.php发现留言板上多了一条恶意的留言内容,如下图所示。该留言内容就是刚才我们登录恶意网站过程中身份被冒充而发表出来的。
审查恶意网站代码,了解CSRF攻击原理:
从代码中可以看到,恶意网站在页面中植入了一个<img>标签,由于其通过CSS样式设置为隐藏,所以我们在访问过程中并没有看到实际的标签内容。这个标签通过设置src地址,向留言板网站发送了一条恶意留言请求。由于浏览器保存了我们在留言板网站的身份标识Cookie,并在发送请求时自动将Cookie附带上,所以恶意网站就成功盗用了我们的身份,完成了一次恶意留言行为,这就是基于GET请求的CSRF攻击全过程。
(二)基于Post形式的CSRF攻击
1.按照步骤一中的方法,重新抓取上传数据包,查看留言内容格式:
从抓包截图中可以看到,我们在留言板中输入的内容,附在HTTP请求的Data域中发给了服务器,这种参数字段存放在HTTP Data域中的请求叫做Post请求。
2.在浏览器中新建一标签页,访问恶意网站:http://10.1.1.23/csrf-post-attacker/attacker.html
发现留言板上多了一条恶意留言内容。该留言内容就是刚才我们登录恶意网站过程中身份被冒充而发表出来的。
审查恶意网站代码,了解CSRF攻击原理:
从代码中可以看到,恶意网站在页面中植入了一个form表单,这个表单的action设置为留言网站地址。同时植入的还有一段Javascript代码,该段代码功能是自动提交form表单数据。这样,当用户访问到该恶意网站时,实际上就通过Post方法向留言板发出了一条恶意留言请求。
五、漏洞修复
● 验证请求的Referer值,如果Referer是以自己的网站开头的域名,则说明该请求来自网站自己,是合法的。如果Referer是其他网站域名或空白,就有可能是CSRF攻击,那么服务器应拒绝该请求,但是此方法存在被绕过的可能。
● CSRF攻击之所以能够成功,是因为攻击者可以伪造用户的请求,由此,抵御CSRF攻击的关键在于:在请求中放入攻击者不能伪造的信息。例如可以在HTTP请求中以参数的形式加入一个随机产生的token,并在服务器端验证token,如果请求中没有token或者token的内容不正确,则认为该请求可能是CSRF攻击从而拒绝该请求。
实验环境:合天实验室
参考:合天网安实验室-专业提供网络安全\信息安全在线实验服务的网络靶场
警告
请勿使用本文提到的内容违反法律。
本文不提供任何担保!
边栏推荐
- Automatic reservation of air tickets in C language
- F200——搭载基于模型设计的国产开源飞控系统无人机
- 图片缩放中心
- HMS core machine learning service creates a new "sound" state of simultaneous interpreting translation, and AI makes international exchanges smoother
- 面向程序员的精品开源字体
- 转载:基于深度学习的工业品组件缺陷检测技术
- 1700C - Helping the Nature
- 微信为什么使用 SQLite 保存聊天记录?
- Compilation principle - top-down analysis and recursive descent analysis construction (notes)
- d绑定函数
猜你喜欢
從交互模型中蒸餾知識!中科大&美團提出VIRT,兼具雙塔模型的效率和交互模型的性能,在文本匹配上實現性能和效率的平衡!...
Why should Li Shufu personally take charge of building mobile phones?
编译原理——预测表C语言实现
STM32按键状态机2——状态简化与增加长按功能
Compilation Principle -- C language implementation of prediction table
UDP协议:因性善而简单,难免碰到“城会玩”
MS-TCT:Inria&SBU提出用于动作检测的多尺度时间Transformer,效果SOTA!已开源!(CVPR2022)...
std::true_ Type and std:: false_ type
[swoole series 2.1] run the swoole first
Stealing others' vulnerability reports and selling them into sidelines, and the vulnerability reward platform gives rise to "insiders"
随机推荐
模板于泛型编程之declval
Distill knowledge from the interaction model! China University of science and Technology & meituan proposed virt, which combines the efficiency of the two tower model and the performance of the intera
HMS Core 机器学习服务打造同传翻译新“声”态,AI让国际交流更顺畅
Release of the sample chapter of "uncover the secrets of asp.net core 6 framework" [200 pages /5 chapters]
Open source and safe "song of ice and fire"
MarkDown语法——更好地写博客
The integrated real-time HTAP database stonedb, how to replace MySQL and achieve nearly a hundredfold performance improvement
虚拟机VirtualBox和Vagrant安装
IP, subnet mask, gateway, default gateway
首先看K一个难看的数字
Principle and usage of extern
FMT open source self driving instrument | FMT middleware: a high real-time distributed log module Mlog
On time and parameter selection of asemi rectifier bridge db207
Olivetin can safely run shell commands on Web pages (Part 1)
推荐好用的后台管理脚手架,人人开源
DNS hijacking
带你穿越古罗马,元宇宙巴士来啦 #Invisible Cities
小程序在产业互联网中的作用
30 minutes to understand PCA principal component analysis
2022 Summer Project Training (II)