跨站请求伪造漏洞(CSRF)

什么是CSRF

  • CSRF(Cross-Site Request Forgery),也被称为 one-click attack 或者 session riding,即跨站请求伪造攻击。

漏洞原理

  • 跨站请求伪造漏洞的原理主要是利用了网站对用户请求的验证不严谨。攻击者会在恶意网站中构造一个伪造请求,然后诱使用户访问该恶意网站,触发浏览器自动发送该伪造请求给目标网站。因为目标网站无法区分这个请求是用户自己发起的还是攻击者伪造的,并且浏览器会自动携带用户的认证信息(如cookie),所以目标网站会认为这个请求是合法的,从而执行了攻击者预期的恶意操作。
  • 跨站请求伪造漏洞原理要点总结:
    1. 用户在访问恶意网站时,会触发浏览器自动发送伪造请求给目标网站。
    2. 目标网站无法区分用户自己发起的请求和攻击者伪造的请求。
    3. 浏览器会自动携带用户的认证信息(如cookie),使得目标网站认为这个请求是合法的。
    4. 攻击者通过这种方式执行了未经授权的操作,实现攻击目标。

攻击过程

  1. 攻击者准备:攻击者首先需要构造一个恶意的请求,该请求通常是一个伪造的HTTP请求,包含攻击者想要执行的操作,如修改用户信息、发送消息等。
  2. 诱导受害者:攻击者需要诱导受害者访问包含恶意请求的网页或链接。这通常通过发送诱导邮件、社交工程或其他方式引诱用户点击恶意链接来实现。
  3. 受害者执行请求:当受害者点击了包含恶意请求的链接或访问了恶意网页时,浏览器会自动发送包含恶意请求的HTTP请求到目标网站,由于受害者已经在目标网站中登录,因此服务器会认为这个请求是合法的,并执行其中的操作。
  4. 攻击成功:目标网站接收到恶意请求后,会执行其中的操作,如修改用户信息、发送消息等。由于请求是以受害者的身份发送的,因此服务器无法区分正常用户的请求和攻击者的请求,导致攻击成功。

漏洞危害

  • 强制用户执行恶意操作:攻击者利用CSRF漏洞可以强制用户在其不知情的情况下执行恶意操作,例如修改用户信息、发起转账等操作。
  • 盗取用户信息:攻击者可以利用CSRF漏洞来发送恶意请求,以获取用户的敏感信息,如个人资料、账户信息等。
  • 发布恶意内容:攻击者可以利用CSRF漏洞在用户身份下发布恶意内容,传播虚假信息或恶意链接,从而对用户和网站造成损害。
  • 破坏网站功能:攻击者利用CSRF漏洞可以对网站的功能进行恶意操作,比如删除用户数据、更改设置等,导致网站无法正常运行。
  • 造成经济损失:通过CSRF漏洞进行恶意操作可能导致用户或网站遭受经济损失,比如盗取资金、转账等操作。

攻击类型

  1. 针对用户会话:攻击者通过伪造用户请求,实现对用户当前已登录会话的操作,如修改用户密码、发送消息、转账等。
  2. 针对验证信息:攻击者在用户浏览器中设置恶意网站,当用户访问恶意网站时,发送包含受害者身份验证信息的请求到目标网站,从而实现攻击。
  3. 针对敏感操作:攻击者通过伪造用户请求,实现对网站中敏感操作的执行,如删除账号、修改支付信息等。
  4. 针对POST请求:攻击者通过伪造POST请求,欺骗用户提交表单,从而实现对目标网站的攻击。
  5. 针对非GET请求:CSRF漏洞通常涉及非GET请求,攻击者可以构造POST、PUT、DELETE等请求来执行攻击操作。
  6. 针对用户权限:攻击者可以通过CSRF漏洞提升用户权限,执行一些高权限操作。

攻击条件

  • 用户已经在目标网站中进行了认证,并且在同一浏览器会话中保持着登录状态。
  • 攻击者可以构造一个特定的恶意请求,该请求可以执行某种敏感操作,比如修改用户信息、转账、删除数据等。
  • 攻击者能够诱使用户访问包含恶意请求的链接或页面,例如通过社会工程学手段、钓鱼网站等方式。
  • 目标网站没有足够的CSRF防护措施,例如缺乏CSRF令牌、Referer检查、双重提交Cookie等。

利用工具

短链接工具:https://urlc.net/

高危触发点

  • 论坛交流、用户中心、反馈留言、交易管理、后台管理
  • 订阅、评论、管理员添加、密码修改、资料修改、删除用户或者信息

绕过方式

  1. 利用社会工程学:攻击者可能会通过发送钓鱼邮件或诱使用户点击恶意链接的方式,引导用户在已登录的情况下访问恶意网站,从而触发CSRF攻击。这种方法可以绕过CSRF令牌的验证,因为用户本身是在已登录状态下发起请求的。
  2. 利用跨站脚本攻击(XSS):攻击者可以利用XSS漏洞注入恶意脚本到受害者的浏览器中,通过触发恶意脚本来发起CSRF攻击。这种方式可以利用受害者的会话信息,绕过CSRF令牌的验证。
  3. 利用DNS重绑定攻击:攻击者可能通过DNS重绑定攻击,将恶意网站的域名指向目标网站的IP地址,以绕过同源策略,从而发起CSRF攻击。
  4. 利用代理服务器:攻击者可以通过代理服务器来修改请求头中的Referer字段,绕过服务器端对Referer字段的验证,从而发起CSRF攻击。

漏洞挖掘

  1. 最简单的方法就是抓取一个正常请求的数据包,如有Referer字段和token,可能存在CSRF漏洞。
  2. 如有Referer字段,但去掉Referer字段后重新提交,如提交后还有效,基本可以确定存在CSRF漏洞。

实验分析

GET和POST请求类型区别

  • GET请求:通过URL传递参数,参数会显示在URL中,例如:http://example.com/search?keyword=apple
  • POST请求:通过请求体传递参数,参数不会显示在URL中,更适合传递敏感数据,例如:表单提交或文件上传。

low
  1. 获取到GET类型请求URL。

image.png

  1. 生成csrf poc。

image.png

  1. 利用生成的csrf html,制作web服务器,然后诱惑用户进行点击。

image.png

  1. 登录的情况下点击此链接。

image.png
image.png

  1. 用户受到诱惑点击后密码成功修改。

image.png

  1. 用户使用原本密码发现无法登录,密码成功修改。

image.png


medium
  • HTTP请求包中的Referer是一个头部字段,用来指示请求的来源页面 URL。当用户点击链接或提交表单时,浏览器会在发送请求时自动添加Referer字段,告诉服务器该请求来自哪个页面。

high
  1. 源码分析主要区别是增加了一个token值的校验,每次登录都会校验token是否正确,若想要执行更改密码操作必须知道正常用户的token。
  2. 利用xss漏洞与csrf漏洞配合,通过xss漏洞获得token再利用csrf漏洞结合拿到的token完成攻击。获取到token后不要点击确定,否则token将会失效。
<iframe src="../csrf/" onload=alert(frames[0].document.getElementsByName('user_token')[0].value)>

image.png

  1. 拦截修改密码的数据包,并生成一个csrf poc。将token值进行替换,并制作一个web服务器让用户去访问。

image.png
image.png
image.png
image.png


防御措施

  1. 验证来源:在处理请求时,验证请求的来源是否合法。可以通过检查请求头中的Referer字段或使用同源策略等方式来验证请求的来源是否是可信的。
  2. 使用CSRF Token:为每个用户生成一个唯一的CSRF Token,并将该Token添加到每个表单提交或敏感操作请求中。服务器在接收请求时验证该Token的有效性,如果Token无效,则拒绝该请求。
  3. 使用同源策略:利用浏览器的同源策略,确保只有同一域名下的页面才能发起对当前页面的请求。这样可以有效防止恶意网站发起CSRF攻击。
  4. 设置Cookie属性:在Cookie中使用Secure、HttpOnly和SameSite属性来增加Cookie的安全性,防止被恶意网站利用进行CSRF攻击。
  5. 避免使用GET请求:敏感操作不应该使用GET请求,因为GET请求的参数会被保存在浏览器历史记录和日志文件中,容易被恶意网站获取。
  6. 避免自动登录:避免在用户进行敏感操作时自动登录,用户需要手动输入密码进行确认,增加安全性。
  7. 定期审计和测试:定期对网站进行安全审计和漏洞测试,及时发现并修复潜在的CSRF漏洞。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/807505.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

正信法律:老板一直拖欠工资怎么办

在职场中&#xff0c;薪酬是劳动者辛勤工作的直接回报&#xff0c;然而不幸的是&#xff0c;拖欠工资的现象时有发生。面对老板一直拖欠工资的困境&#xff0c;员工应采取一系列明智而有效的措施来维护自己的合法权益。 与雇主进行沟通。清晰、冷静地表达自己的诉求&#xff0c…

电脑怎么下载微信小程序的视频

电脑怎么下载微信小程序中的视频资源&#xff0c;本篇文章就教大家如何下载微信小程序的视频资源的方法&#xff0c;这里要借助一个工具:下载高手 下载高手链接&#xff1a;https://pan.baidu.com/s/1qJ81sNBzzzU0w6DWf-9Nxw?pwdl09r 提取码&#xff1a;l09r --来自百度网盘…

个人在线要饭网站源码

源码简介 施舍也要讲究便捷&#xff0c;如果能像购物一样&#xff0c;那也是很美的一件事情&#xff1b; 接入了支付宝当面付系统. 安装环境 php5.6 Nginx 安装教程 1.上传源码压缩包到网站目录并解压即可 2.支付配置 /修改文件 app/config.php /*** 请填写以下配置信…

互联网大厂ssp面经之路:计算机网络part1

1. 计算机网络的组成部分有哪些&#xff1f; a. 硬件设备&#xff1a;计算机网络由各种硬件设备组成&#xff0c;包括计算机、服务器、路由器、交换机、网卡等。这些设备通过物理连接&#xff08;如网线、光纤&#xff09;相互连接。 b. 协议&#xff1a;计算机网络中的通信需…

vue商城项目vue shop vite

Vue Shop 是一个基于 Vue.js 框架构建的电子商务平台&#xff0c;它利用了 Vue 的响应式数据绑定和组件化的特点&#xff0c;为用户提供了一种快速开发和部署在线商店的解决方案。Vite 是一种现代化的前端构建工具&#xff0c;它提供了快速的冷启动、即时模块热更新&#xff08…

数据安全之路:Databend 用户与角色管理应用

Databend 目前支持基于角色的访问控制 (RBAC) 和 自主访问控制 (DAC) 模型&#xff0c;用于访问控制功能。 通过本指南&#xff0c;我们会了解权限和角色在 Databend 中的基本概念&#xff0c;以及如何管理角色、继承角色与建立层级、设置默认角色以及所有权的重要性。这些功能…

springboot-开源项目-追踪法-简单有效,从F12到SQL数据库表

使用的技术栈&#xff1a;springbootmybatis&#xff0c;edge浏览器 插件&#xff1a;MybatisX 第一步&#xff1a; 按F12,选择网络 第二步&#xff1a; 进入IDEA编辑器&#xff0c;键盘按两次shift键&#xff0c;点击第一个&#xff0c;快速定位到该操作 3&#xff1a; 我…

解码rmallox勒索病毒:深入了解与全面应对这一网络威胁

随着科技的不断发展&#xff0c;我们的生活已经与数字世界紧密相连。然而&#xff0c;这种紧密的联系也带来了新的安全隐患&#xff0c;其中勒索病毒就是近年来网络安全领域的一个突出问题。特别是rmallox勒索病毒&#xff0c;它以其独特的加密性和破坏性&#xff0c;给全球范围…

一起找bug之购物

如果不是购物车满了&#xff0c;大概都不会发现这个 bug 淘宝 APP 修复了购物车满的情况下&#xff0c;往里面添加新商品时&#xff0c;会把一个老商品移入收藏夹&#xff0c; 但是如果这个老商品是已失效状态&#xff0c;就无法自动移入收藏夹&#xff0c;而且会一直在购物车…

Qt之QSS样式表

QSS简介 QSS&#xff08;Qt Style Sheet&#xff09;样式表是一种用于描述图形用户界面&#xff08;GUI&#xff09;样式的语言。它允许开发者为应用程序的控件定义视觉外观&#xff0c;例如颜色、字体、尺寸和布局等。 QSS 样式表的主要目的是提供一种简洁而灵活的方式来美化…

Vue 读取后台二进制文件流转为图片显示

Vue 读取后台二进制文件流转为图片显示 后台返回格式 <img :src"payImg" id"image" style"width: 150px;height: 150px;" alt"">axios写法 重点 responseType: ‘blob’ &#xff0c; 使用的是res中的data blob this.$axios.…

Windows安装MySQL

文章目录 一、下载MySQL安装包1、选择版本以及Windows系统点击下载2、选择No thanks,just start my download.3、下载到指定目录解压即可 二、添加环境变量三、添加配置文件四、初始化MySQL数据库服务器五、安装启动服务六、修改连接登录密码七、停止MySQL服务 一、下载MySQL安…

Linux网络的封包和拆包

一般使用socket 到令牌环网然后向上逐渐拆包 MTU:最大的传输单元 以太网&#xff1a;1500 mss&#xff1a;网络类型&#xff0c;线路&#xff0c;以及特性相关

数据库知识点汇总(最全!,2024年最新大佬分享开发经验

十九、删除数据 DELETE 语句 使用 DELETE 语句从表中删除数据。 DELETE FROM table [WHERE condition]; 删除数据 使用 WHERE 子句删除指定的记录 DELETE FROM departments WHERE department_name ‘Finance’; 如果省略 WHERE 子句&#xff0c;则表中的全部数据将被删除 DELE…

[自研开源] MyData v0.8 数据集成案例分享

开源地址&#xff1a;gitee | github 详细介绍&#xff1a;MyData 基于 Web API 的数据集成平台 部署文档&#xff1a;用 Docker 部署 MyData 使用手册&#xff1a;MyData 使用手册 试用体验&#xff1a;https://demo.mydata.work 交流Q群&#xff1a;430089673 案例&#xff…

Oracle 11g完全卸载教程(Windows)

文章目录 一、停止Oracle服务二、卸载Oracle1、卸载Oracle产品2、删除注册表3、删除环境变量以及其余文件 一、停止Oracle服务 进入服务 找到服务中的Oracle服务并且停止 全部停止运行成功 二、卸载Oracle 1、卸载Oracle产品 点击开始菜单找到Oracle&#xff0c;然后点击…

实验模拟 搭建elk 日志分析系统

目录 一 实验环境 二 ELK Elasticsearch 集群部署&#xff08;在Node1、Node2节点上操作&#xff09; 1&#xff0c;环境准备 2, 部署 Elasticsearch 软件(node1 node2) 2.1安装es 2.2设置开机自启 2.3修改 elasticsearch主配置文件&#xff08;先备份&#xff09;…

【vue/uniapp】使用 smooth-signature 实现 h5 的横屏电子签名

通过github链接进行下载&#xff0c;然后代码参考如下&#xff0c;功能包含了清空、判断签名内容是否为空、生成png/jpg图片等。 签名效果&#xff1a; 预览效果&#xff1a; 下载 smooth-signature 链接&#xff1a;https://github.com/linjc/smooth-signature 代码参考&a…

极狐GitLab 如何在 helm 中恢复数据

本文作者&#xff1a;徐晓伟 GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 本文主要讲述了如何在极狐GitLab …

查杀linux挖矿病毒 kswapd0

中毒现象 高cpu占用&#xff0c;使用top命令查看cpu使用率长时间50%以上&#xff0c;cpu占用异常的进程八成就是挖矿病毒进程 此病毒隐藏了自己&#xff0c;top命令无法查看到挖矿病毒进程&#xff0c;可通过sysdig命令找到隐藏进程 安装sysdig curl -s https://s3.amazonaw…