跨站请求伪造漏洞(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.rhkb.cn/news/304630.html

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

相关文章

spring-cloud微服务openfeign

Spring Cloud openfeign对Feign进行了增强&#xff0c;使其支持Spring MVC注解&#xff0c;另外还整合了Ribbon和Nacos&#xff0c;从而使得Feign的使用更加方便 优势&#xff0c;openfeign可以做到使用HTTP请求远程服务时就像洞用本地方法一样的体验&#xff0c;开发者完全感…

获取请求数据

假设有这样一个请求&#xff1a;http://localhost:8080/springmvc/register?namezhangsan&password123&emailzhangsanqq.com 在SpringMVC中应该如何获取请求提交的数据&#xff1f;在SpringMVC中又应该如何获取请求头信息&#xff1f;在SpringMVC中又应该如何获取客户…

搭建第一个Web服务器(在eclipse或idea上部署Tomcat服务器)

&#x1f4bb;博主现有专栏&#xff1a; C51单片机&#xff08;STC89C516&#xff09;&#xff0c;c语言&#xff0c;c&#xff0c;离散数学&#xff0c;算法设计与分析&#xff0c;数据结构&#xff0c;Python&#xff0c;Java基础&#xff0c;MySQL&#xff0c;linux&#xf…

深入理解Linux系统中的前后台任务与守护进程

⭐小白苦学IT的博客主页 ⭐初学者必看&#xff1a;Linux操作系统入门 ⭐代码仓库&#xff1a;Linux代码仓库 ❤关注我一起讨论和学习Linux系统 1.前言 在Linux系统中&#xff0c;进程管理是至关重要的一个环节。其中&#xff0c;前后台任务和守护进程是进程管理中不可忽视的两…

阿里云云效CI/CD配置

1.NODEJS项目流水线配置(vue举例) nodejs构建配置 官方教程 注意:下图的dist是vue项目打包目录名称,根据实际名称配置 # input your command here cnpm cache clean --force cnpm install cnpm run build 主机部署配置 rm -rf /home/vipcardmall/frontend/ mkdir -p /home/…

刷题之Leetcode707题(超级详细)

707.设计链表 力扣题目链接(opens new window)https://leetcode.cn/problems/design-linked-list/ 题意&#xff1a; 在链表类中实现这些功能&#xff1a; get(index)&#xff1a;获取链表中第 index 个节点的值。如果索引无效&#xff0c;则返回-1。addAtHead(val)&#x…

Day37代码随想录(1刷) 动态规划

509. 斐波那契数 斐波那契数 &#xff08;通常用 F(n) 表示&#xff09;形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始&#xff0c;后面的每一项数字都是前面两项数字的和。也就是&#xff1a; F(0) 0&#xff0c;F(1) 1 F(n) F(n - 1) F(n - 2)&#xff0c;其中 n …

外包干了17天,技术倒退明显

先说情况&#xff0c;大专毕业&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近6年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落&#xff01; 而我已经在一个企业干了四年的功能…

局域网tcp通信实验

两台windows系统计算机简单TCP通信测试_两台计算机tcp通信-CSDN博客 使用这篇文章的小工具。 环境&#xff1a; 我和同学的两台笔记本电脑。 使用我的手机开热点&#xff0c;两台电脑连接热点。 我的&#xff1a; IPv4 地址 . . . . . . . . . . . . : 192.168.92.79 子…

Day04-SHELL自动化编程-循环与颜色函数库

Day04-SHELL自动化编程-循环与颜色函数库 11. 必知必会核心命令11.1 命令概述11.7 案例11.8 小结 12 Shell编程-循环12.1 循环概述12.2 for循环1&#xff09;最常用的for循环格式2&#xff09;c语言格式for循环3&#xff09;for循环格式及应用场景4&#xff09;案例 12.3 while…

【WSN覆盖优化】基于灰狼优化算法的无线传感器网络覆盖 GWO-WSN覆盖优化【Matlab代码#74】

文章目录 【可更换其他算法&#xff0c;获取资源请见文章第5节&#xff1a;资源获取】1. 灰狼优化算法2. WSN节点感知模型3. 部分代码展示4. 仿真结果展示5. 资源获取 【可更换其他算法&#xff0c;获取资源请见文章第5节&#xff1a;资源获取】 1. 灰狼优化算法 此处略。 2.…

【Java8新特性】四、强大的Stream api

​ 这里写自定义目录标题 一、了解Stream二、流(stream)到底是什么&#xff1f;三、Stream操作的三个步骤四、创建Stream的四种方式五、Stream 的中间操作1、筛选和切片2、map 映射3、排序 六、Stream 的终止操作1、查找和匹配2、归约3、收集 一、了解Stream Stream是Java8中…

spring容器

spring容器 实现方式 spring中提供了各式各样的IOC容器的实现供用户选择和使用&#xff0c;使用什么样的容器取决于用户的需要 BeanFactory 该接口是最简单的容器&#xff0c;提供了基本的DI支持。最常用的BeanFactory实现是XmlBeanFactory类&#xff0c;根据XML文件中的定义加…

idea常用配置

IDEA设置全局配置 参考&#xff1a;IDEA设置全局配置_idea如何打开一个项目,全局设置-CSDN博客 idea提交代码到git或svn上时&#xff0c;怎么忽略.class、.iml文件和文件夹等不必要的文件 参考&#xff1a;idea提交代码到git或svn上时&#xff0c;怎么忽略.class、.iml文件和文…

Python爬虫网络实践:去哪儿旅游数据爬取指南

Python爬虫网络实践&#xff1a;去哪儿旅游数据爬取指南 在这个博客中&#xff0c;我们将探索如何使用 Python 来进行网络数据抓取&#xff0c;并以抓取旅游数据为例进行演示。我们将通过一个简单的示例来说明如何利用 Python 中的常用库进行网页抓取&#xff0c;从而获取旅游…

软件详细设计说明书(套用案例)

2系统总体设计 2.1整体架构 2.2整体功能架构 2.3整体技术架构 2.4设计目标 2.5.1总体原则 2.5.2实用性和先进性 2.5.3标准化、开放性、兼容性 2.5.4高可靠性、稳定性 2.5.5易用性 2.5.6灵活性和可扩展性 2.5.7经济性和投资保护 3系统功能模块详细设计 3.1个人办公…

一键下载 M3U8 并转换为 MP4升级版

之前的下载 M3U8程序&#xff0c;有很多问题&#xff0c; 为此做了一些升级&#xff0c;分享给大家。 增加了存在播放列表的情况处理播放列表路径和ts路径错误问题多线程问题对于电视剧多文件下载的处理 这里从网上找了一部的链接&#xff0c;可以参考这个网站https://www.zu…

3 突破编程_前端_SVG(rect 矩形)

1 rect 元素的基本属性和用法 在SVG中&#xff0c;<rect> 元素用于创建矩形。 <rect> 元素有一些基本的属性&#xff0c;可以用来定义矩形的形状、位置、颜色等。以下是这些属性的详细解释&#xff1a; x 和 y &#xff1a;这两个属性定义矩形左上角的位置。 x …

Llama 3下月正式发布,继续开源!

4月10日&#xff0c;Techcrunch消息&#xff0c;Meta在本周伦敦举办的一场活动中确定&#xff0c;下个月将正式发布Llama 3并且继续开源。 Meta全球事务总裁Nick Clegg表示&#xff0c;我们希望在下个月&#xff0c;甚至更短的时间内&#xff0c;正式推出新一代基础模型Llama …

全光谱台灯哪个牌子好,2024全光谱护眼台灯推荐

近年来&#xff0c;全光谱台灯悄然跻身于家庭必备品之列&#xff0c;赢得了众多消费者的好评。它们以减轻眼睛疲劳的功效而受到推崇&#xff0c;尽管也有声音质疑其实际效用&#xff0c;认为所谓的益处不过是一种心理安慰。面对这些相互矛盾的观点&#xff0c;许多消费者感到困…