当前位置: 首页 > news >正文

CSRF 漏洞详解

CSRF 漏洞详解

文章目录

  • CSRF 漏洞详解
    • 漏洞描述
    • 漏洞原理
    • 漏洞场景
    • 漏洞评级
    • 漏洞危害
    • 漏洞验证
    • 漏洞利用
    • 漏洞防御
    • 典型案例

漏洞描述

CSRF(Cross-Site Request Forgery)漏洞是一种Web应用程序安全漏洞,它允许攻击者利用受害者的已认证会话来执行未经授权的恶意操作。攻击者可以诱使受害者在受害者已经登录的情况下,通过社交工程或其他方式执行恶意请求,从而利用受害者的身份执行恶意操作。
在这里插入图片描述

漏洞原理

攻击者利用已经认证的用户会话,在用户不知情的情况下向目标网站发送恶意请求,以执行未经授权的操作。攻击者通常会利用社交工程学手段,诱使用户点击包含恶意请求的链接或访问恶意网站,从而触发CSRF攻击。

该漏洞利用的是服务器对客户浏览器的信任

具体来说,攻击者会在恶意网站或恶意链接中嵌入一段恶意代码,该代码会向目标网站发送请求,以执行攻击者想要的操作。由于用户已经登录到目标网站,因此请求中包含了用户的身份验证信息,目标网站无法区分恶意请求和合法请求,从而执行了攻击者的操作。

该漏洞重点在于更改状态的请求,而不是盗取数据,因为攻击者无法查看伪造请求的响应

漏洞场景

  • 增删改查的交互点
  • 无验证码,无token等
  • 服务器未对referer头进行判断

漏洞评级

漏洞等级:高危

漏洞危害

这种类型的漏洞可能会导致恶意操作,例如更改受害者的账户信息、发起资金转移、删除数据等。攻击者通常会利用受害者的身份在受害者不知情的情况下发送恶意请求,因此这种漏洞对于受害者来说是隐蔽的。

漏洞验证

正常访问网页修改密码
在这里插入图片描述
攻击者构造GET请求进行CSRF攻击

<meta charset="utf-8">
<img src="sao.jpg">
</br>
<img src="http://10.9.47.77/dvwa_2.0.1/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change" alt="美女好看吗">

构造好之后给目标修改密码时进行了访问
在这里插入图片描述

此时已经遭受到攻击密码被修改了
在这里插入图片描述

漏洞利用

  • GET方式 :构造一个http请求
  • POST方式:攻击者构造一个表单,用户点击时自动提交

漏洞防御

  • 验证 Referer 字段
  • 二次验证:在关键操作之前,再输入密码或者验证码
  • 添加Token 验证
  • HttpOnly:某些情况下禁止 JS 脚本访问 Cookie 信息
  • SameSite:Cookie 属性,浏览器自带安全机制

典型案例

一个典型的CSRF案例是2008年的“Samy蠕虫”事件。当时,一名名叫Samy Kamkar的黑客利用了MySpace社交网络上的CSRF漏洞,成功传播了一种名为“Samy蠕虫”的恶意代码。

这个蠕虫利用了MySpace网站上的漏洞,通过用户的浏览器向MySpace网站发送了恶意请求,将受害者的MySpace页面上添加了一个名为“Samy”的友情链接。当其他用户访问受感染的页面时,他们的账户也会被感染,进而传播这个蠕虫。

这个事件引起了广泛的关注,因为它展示了CSRF漏洞的危险性和潜在的影响。MySpace最终修复了这个漏洞,并且Samy Kamkar也因此事件面临了法律责任。

这个案例突出了CSRF漏洞的风险,以及攻击者如何利用这种漏洞来传播恶意代码或执行未经授权的操作。这也提醒了网站开发者和用户需要重视CSRF漏洞,采取相应的防范措施。

相关文章:

  • Jenkins 搭建
  • selenium/webdriver运行原理与机制
  • node插件MongoDB(四)—— 库mongoose 操作文档使用(新增、删除、更新、查看文档)(二)
  • 【Linux】虚拟机连不上外网 (ping www.baidu.com不通)
  • 二叉树题目:二叉树最大宽度
  • 136. 只出现一次的数字 --力扣 --JAVA
  • Kubernetes介绍和环境部署
  • k8s 对外服务之 Ingress( LB + ingress)
  • cadence virtuoso 修改电路原理图背景颜色
  • Ansible的变量(vars,register,set_fact)
  • pandas读写json的知识点
  • docker/ nvidia-docker
  • Postman小白安装和注册入门教程
  • HCIP---OSPF思维导图
  • 内存管理
  • 【Linux系统编程】快速查找errno错误码信息
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • Yii源码解读-服务定位器(Service Locator)
  • 产品三维模型在线预览
  • 从零开始的无人驾驶 1
  • 大快搜索数据爬虫技术实例安装教学篇
  • 对JS继承的一点思考
  • 浮现式设计
  • 力扣(LeetCode)357
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​ArcGIS Pro 如何批量删除字段
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #pragma data_seg 共享数据区(转)
  • #微信小程序:微信小程序常见的配置传值
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (排序详解之 堆排序)
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NET delegate 委托 、 Event 事件,接口回调
  • .net 按比例显示图片的缩略图
  • .NET程序员迈向卓越的必由之路
  • .NET面试题(二)
  • .Net中的集合
  • []指针
  • [AIGC 大数据基础]hive浅谈
  • [Angular 基础] - 表单:响应式表单
  • [C#]winform部署yolov5-onnx模型
  • [C++核心编程](四):类和对象——封装
  • [CTF]2022美团CTF WEB WP
  • [FxCop.设计规则]8. 也许参数类型应该是基类型
  • [IE编程] IE8 新增的C++开发接口
  • [J2ME]url请求返回参数非法(java.lang.illegalArgument)
  • [LeetCode][面试算法]逻辑闭环的二分查找代码思路