IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> CSRF漏洞分析 -> 正文阅读

[网络协议]CSRF漏洞分析

警告

请勿使用本文提到的内容违反法律
本文不提供任何担保

目录

警告

一、预备知识——cookie简介

?二、漏洞简介

三、实验环境介绍

四、实践漏洞学习

(一)基于Get形式的CSRF攻击

(二)基于Post形式的CSRF攻击

五、漏洞修复

实验环境:合天实验室

参考:合天网安实验室-专业提供网络安全\信息安全在线实验服务的网络靶场

警告


一、预备知识——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攻击,需要受害用户需要完成两个步骤:

  1. 登录正常网站,并在本地生成Cookie。
  2. 在不退出正常网站的情况下,访问恶意网站。


三、实验环境介绍

一台机器部署正常网站(留言板):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攻击从而拒绝该请求。


实验环境:合天实验室

参考:合天网安实验室-专业提供网络安全\信息安全在线实验服务的网络靶场

警告

请勿使用本文提到的内容违反法律
本文不提供任何担保

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-07-05 23:42:56  更:2022-07-05 23:43:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 22:54:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码