跨站请求伪造漏洞(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漏洞。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux 文件提权|属性修改

文章目录 suid&#xff08;set uid&#xff09;添加文件属性查看文件属性i &#xff08;immutable&#xff09; umask suid&#xff08;set uid&#xff09; 让文件在执行的时候具有属主&#xff08;对应文件 user &#xff09;的权限 chmod 7744 temp.txt 第一位的7表示权限位…

探寻大数据思想的主要贡献者与核心内容

引言&#xff1a; 在当今数字化时代&#xff0c;大数据已成为企业和科学研究的关键要素。其背后的思想和概念不仅引领了数据处理和分析的革新&#xff0c;也推动了人类对于信息时代的理解与认知。 大数据思想的起源&#xff1a; 在信息爆炸的时代背景下&#xff0c;大数据思…

海外仓的出入库流程有什么痛点?位像素海外仓系统怎么提高出入库效率?

随着跨境电商的蓬勃发展&#xff0c;海外仓是其中不可或缺的一个关键环节。而货物的出库与入库则是海外仓管理中的一个核心业务流程&#xff0c;它的运作效率直接影响到整个跨境物流的效率和客户体验。今天&#xff0c;让我们具体来看一看关于海外仓出入库的流程&#xff0c;其…

150行Python代码模拟太阳系行星运转

今天我们用Python来模拟一下太阳系行星运动轨迹~ 先上成品图&#xff08;运行效果含音乐的呦&#xff09; 想要实现这样的效果并不难 准备材料 首先我们需要准备这样一些材料 宇宙背景图 背景透明的行星图 编写代码 代码分块详解 导入需要的模块 import pygame import …

深度学习理论基础(六)多头注意力机制的自定义及Pytoch库的使用详细代码

目录 1. Scaled Dot-Product Attention2. 多头注意力机制框图&#xff08;1&#xff09;计算公式&#xff08;2&#xff09;具体计算过程&#xff08;3&#xff09;具体代码 深度学习中的注意力机制&#xff08;Attention Mechanism&#xff09;是一种模仿人类视觉和认知系统的…

轻量应用服务器4核8G12M配置优惠价格646元一年零3个月,12M公网带宽

腾讯云轻量4核8G12M服务器优惠价格646元15个月&#xff0c;买一年送3个月&#xff0c;配置为轻量4核8G12M、180GB SSD盘、2000GB月流量、12M带宽&#xff0c;腾讯云优惠活动页面 yunfuwuqiba.com/go/txy 活动链接打开如下图&#xff1a; 腾讯云4核8G服务器租用价格 腾讯云&…

SaaS模式Java版云HIS系统源码 覆盖医院所有业务的HIS信息管理系统源码

SaaS模式Java版云HIS系统源码 覆盖医院所有业务的HIS信息管理系统源码 HIS&#xff08;Hospital Information System&#xff09;是覆盖医院所有业务和业务全过程的信息管理系统。 HIS系统以财务信息、病人信息和物资信息为主线&#xff0c;通过对信息的收集、存储、传递、统…

Android 窗口那些事儿

目录 1. &#x1f4c2; 前言 你&#xff0c;是否有过这些疑问&#xff1f; 2. &#x1f531; Window 2.1 认识 Window 的几个阶段 1&#xff09;阶段一&#xff1a;Window 约等于 Activity 2&#xff09;阶段二&#xff1a;Window 约等于 View 3&#xff09;阶段三&…

list的使用

前言 我们前面已经对string和vector进行了学习使用&#xff0c;以及对他们的底层进行了模拟实现&#xff01;本期我们继续学习STL的另外一个容器---list。 本期内容介绍 什么是list&#xff1f; list的常用接口 什么是list? 还是来看看官方的文档说明&#xff01; 这里通过…

[蓝桥杯 2017 国 C] 合根植物

[蓝桥杯 2017 国 C] 合根植物 题目描述 w 星球的一个种植园&#xff0c;被分成 m n m \times n mn 个小格子&#xff08;东西方向 m m m 行&#xff0c;南北方向 n n n 列&#xff09;。每个格子里种了一株合根植物。 这种植物有个特点&#xff0c;它的根可能会沿着南北…

【MySQL】增删改查操作(基础)

文章目录 1、新增操作&#xff08;Create&#xff09;1.1单行数据全列插入1.2多行数据指定列插入 2、查询操作&#xff08;Retrieve&#xff09;2.1全列查询2.2指定列查询2.3指定列查询2.4别名&#xff08;as&#xff09;2.5去重&#xff08;distinct&#xff09;2.6排序&#…

数据结构—图

图的基本概念 图就是由顶点的有穷非空集合和顶点之间的边组成的集合。通常表示为&#xff1a;G(V,E)&#xff0c;其中&#xff0c;G 表示一个图&#xff0c;V 表示顶点的集合&#xff0c;E 表示边的集合。 顶点 图中的数据元素&#xff0c;我们称之为顶点&#xff0c;图至少有…

常见现代卷积神经网络(Pytorch 09)

本章将介绍现代的 卷积神经网络架构&#xff0c;许多现代卷积神经网络的研究都是建立在这一章的基础上的。在本章中的每一个模型都曾一度占据主导地位&#xff0c;其中许多模型都是 ImageNet竞赛 的优胜者。ImageNet竞赛自2010年以来&#xff0c;一直是计算机视觉中监督学习进展…

面试题——JVM老年代空间担保机制(我的想法)

这里借用一下人家的图&#xff0c;来说一下我的想法&#xff0c;嘻嘻。。。。 原文链接&#xff1a;一道面试题&#xff1a;JVM老年代空间担保机制-CSDN博客? 嗯&#xff0c;我觉得老年代担保机制的主要作用就是避免频繁触发FULL GC&#xff0c;这其实也是因为年轻代Minor GC…

Java项目:基于Springboot+vue社区医院管理系统设计与实现(源码+数据库+毕业论文)

一、项目简介 本项目是一套基于Springbootvue社区医院管理系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单、功能…

数据结构之顺序表的相关知识点及应用

个人主页&#xff08;找往期文章包括但不限于本期文章中不懂的知识点&#xff09;&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 目录 顺序表的概念及结构 顺序表的分类 顺序表的实现 在顺序表中增加数据 在顺序表中删除数据 在顺序表中查找数据 顺序表源码 顺序表的概念…

浮动辊位移测量功能块(CODESYS ST代码)

1、张力测量+标定(ST代码) 张力测量+标定(ST代码)_动态舞轮控制张力-CSDN博客文章浏览阅读804次。跳舞轮对应张力调节范围,我们可以通过改变气缸的气压方式间接改变,张力跳舞轮在收放卷闭环控制上的详细应用,可以参看下面的文章链接,这里我们主要讨论精密可调气阀的模拟量…

Java | Leetcode Java题解之第6题Z字形变换

题目&#xff1a; 题解&#xff1a; class Solution {public String convert(String s, int numRows) {int n s.length(), r numRows;if (r 1 || r > n) {return s;}int t r * 2 - 2;int c (n t - 1) / t * (r - 1);char[][] mat new char[r][c];for (int i 0, x …

[Spring Cloud] gateway全局异常捕捉统一返回值

文章目录 处理转发失败的情况全局参数同一返回格式操作消息对象AjaxResult返回值状态描述对象AjaxStatus返回值枚举接口层StatusCode 全局异常处理器自定义通用异常定一个自定义异常覆盖默认的异常处理自定义异常处理工具 在上一篇章时我们有了一个简单的gateway网关 [Spring C…

比selenium体验更好的ui自动化测试工具: cypress介绍

话说 Cypress is a next generation front end testing tool built for the modern web. And Cypress can test anything that runs in a browser.Cypress consists of a free, open source, locally installed Test Runner and a Dashboard Service for recording your tests.…