CSRF 攻击实验:更改请求方式绕过验证

前言

CSRF(Cross-Site Request Forgery),也称为XSRF,是一种安全漏洞,攻击者通过欺骗用户在受信任网站上执行非自愿的操作,以实现未经授权的请求。

CSRF攻击利用了网站对用户提交的请求缺乏充分验证和防范的弱点。攻击者通常通过在受信任网站上构造恶意的请求链接或提交表单,然后诱使用户点击该链接或访问包含恶意表单的页面。当用户执行了这些操作时,网站会自动发送请求,包含用户的身份验证信息,而用户并不知情。

以下是一个简单的示例,说明可能导致CSRF攻击的代码片段:

<!-- 受信任网站的删除用户请求 -->
<form action="https://example.com/deleteUser" method="POST"><input type="hidden" name="userId" value="123" /><input type="submit" value="Delete User" />
</form>

在这个示例中,攻击者可能在自己的网站上构造一个页面,包含上述代码。当用户访问该页面时,浏览器会自动向`https://example.com/deleteUser`发送POST请求,删除用户ID为123的用户,而用户可能并不知情。

为了防止CSRF攻击,可以采取以下安全措施:

1. CSRF令牌:为每个用户生成独特的CSRF令牌,并将其包含在请求中。服务器在处理请求时验证令牌的有效性,如果令牌无效,则拒绝该请求。

2. SameSite Cookie属性:将Cookie的SameSite属性设置为Strict或Lax,以限制Cookie的跨站点访问。这可以防止攻击者在受信任网站上利用用户的身份验证Cookie。

3. 验证HTTP Referer头部:服务器可以验证请求中的Referer头部,确保请求来自受信任的来源。然而,这种方法并不可靠,因为Referer头部可能被篡改或缺失。

4. 验证用户操作:在执行敏感操作(如删除用户)之前,要求用户进行额外的身份验证,如输入密码或通过二次确认。

5. 随机化请求参数:在请求中包含随机生成的参数,并且要求服务器验证这些参数的有效性。这可以防止攻击者构造恶意请求。

总之,CSRF是一种安全漏洞,攻击者通过欺骗用户在受信任网站上执行非自愿的操作来实现未经授权的请求。为了防止CSRF攻击,应使用CSRF令牌、设置SameSite Cookie属性、验证HTTP Referer头部、验证用户操作和随机化请求参数等安全措施。

实操演示

打开靶场

靶场链接icon-default.png?t=N7T8https://portswigger.net/web-security/csrf/bypassing-token-validation/lab-token-validation-depends-on-request-method点击 Access The Lab

该实验室的电子邮件更改功能容易受到 CSRF 的攻击。它尝试阻止 CSRF 攻击,但仅对某些类型的请求进行防御。要完成该实验,请使用您的漏洞利用服务器托管一个 HTML 页面,该页面使用CSRF 攻击来更改查看者的电子邮件地址。您可以使用以下凭据登录您自己的帐户:wiener:peter

点击 My account 登录

到了这个页面后根据题意应该存在 CSRF 漏洞,打开 BurpSuite 抓包发现 email 参数以及 csrf 参数

右键生成 CSRF Poc

点击复制 HTML

回到靶场点击 Go to exploit server

粘贴到 Body 内然后点击 VIew exploit

显示无效

补充知识

在CSRF防护中,令牌验证的方式可以根据请求方法的不同而有所差异。这是因为不同的请求方法在请求的构造和传递方式上有所不同。以下是对CSRF中令牌验证与请求方法的关系的理解:

1. GET请求:对于GET请求,通常不建议在URL中包含敏感信息,因此CSRF令牌可以通过请求头中的自定义字段进行传递。服务器在处理GET请求时,验证请求头中的令牌的有效性。

2. POST请求:对于POST请求,可以将CSRF令牌作为请求体中的隐藏字段(hidden field)进行传递。服务器在处理POST请求时,验证隐藏字段中的令牌的有效性。

3. AJAX请求:对于使用AJAX进行的异步请求,可以将CSRF令牌作为请求头中的自定义字段进行传递。服务器在处理AJAX请求时,验证请求头中的令牌的有效性。

4. PUT、DELETE、PATCH等其他请求方式:对于这些请求方式,同样可以将CSRF令牌作为请求头中的自定义字段进行传递。服务器在处理这些请求时,验证请求头中的令牌的有效性。

需要注意的是,CSRF令牌的验证方式应根据请求方法进行相应配置,以确保令牌的有效性。服务器在接收到请求后,根据请求方法来选择正确的验证方式,以防止CSRF攻击。

此外,CSRF令牌的生成和分发也应根据请求方法进行适当的处理。例如,对于GET请求,令牌可以在用户登录或访问受保护页面时生成,并在请求头中的自定义字段中进行传递。对于POST请求,令牌可以作为隐藏字段包含在表单中。

综上所述,CSRF中令牌验证的方式可以根据请求方法的不同进行定制。服务器在处理请求时,根据请求方法选择正确的验证方式,并确保令牌的有效性。同时,生成和分发令牌的方式也应根据请求方法进行适当的处理。这样可以增强CSRF防护的安全性和可靠性。

重新回到 BurpSuite 中更改请求方式然后放行

可以看到邮箱更改成功,证明 GET 请求也能更改邮箱 

之前用 POST 请求构造 CSRF Poc 不行,这次换 GET 尝试

粘贴到 Body 中点击 View exploit

更改成功!

最后重新更改下邮箱点击 Deliver exploit to victim 即可通关 

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

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

相关文章

英语学习笔记10——Look at ...

Look at … 看…… 词汇 Vocabulary fat adj. 胖的&#xff0c;丰富的 n. 脂肪 例句&#xff1a;他是个胖男孩。    He is a fat boy. 搭配&#xff1a;fat cat 有钱人&#xff0c;土豪 woman n. 女人 girl n. 女孩 madam n. 女士 man n. 男人 boy n. 男孩 sir n. 先生 …

jdk安装多个版本,但是java -version显示最早安装的版本,换掉Path或者JAVA_HOME不生效问题

问题一&#xff1a;当你的电脑上又多个jdk版本&#xff0c;如17 或者8时&#xff0c;使用命令行 java -version显示最早安装的&#xff0c;如下图所示&#xff1a;环境变量配置的17&#xff0c;但是命令行显示的是8。 原因&#xff1a;windows电脑装jdk17后 会在你的环境变量…

声纹识别在无人机探测上的应用

无人机在民用和军事领域的应用越来越广泛。然而&#xff0c;随着无人机数量的增加&#xff0c;"黑飞"现象也日益严重&#xff0c;对公共安全和隐私构成了威胁。因此&#xff0c;开发有效的无人机探测与识别技术变得尤为重要。及时发现黑飞无人机的存在进而对其型号进…

Springboot+Vue项目-基于Java+MySQL的民族婚纱预定系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

在浏览器执行js脚本的两种方式

fetch请求get 在浏览器执行http请求,可以使用fetch函数; fetch(“url”).then(response => response.text()) .then(data => console.log(JSON.parse(data)[‘status’])) .catch(error => console.error(error)) 直接返回json数据: fetch(“url”).then(response…

【Java】/*数组的定义与使用*/

目录 一、数组的定义 1.1 为什么要使用数组 1.2 什么是数组 1.3 数组的初始化 1.3.1 动态初始化 1.3.2 静态初始化 1.2.3 注意事项 三、遍历数组 3.1 用循环的方式遍历数组 3.2 用 for each 的方式遍历数组 3.3 用 Arrays.toString 的方式遍历数组 3.4 一些其他的…

【3dmax笔记】028:倒角的使用方法

一、倒角描述 在3dmax中创建倒角效果可以通过多种方法实现,以下是几种常见的方法: 使用倒角修改器。首先创建一个图形(如矩形和圆),然后对齐它们,将它们转化为可编辑样条线,并附加在一起,选择要倒角的边缘,然后使用倒角修改器来调整高度、轮廓等参数。使用倒角剖面修…

【稳定检索|投稿优惠】2024年医学、药学与生物工程国际会议(ICMPB 2024)

2024年医学、药学与生物工程国际会议&#xff08;ICMPB 2024&#xff09; 2024 International Conference on Medicine, Pharmacy, and Biotechnology 【会议简介】 2024年医学、药学与生物工程国际会议将于长沙召开。此次会议将汇聚全球医学、药学与生物工程领域的顶尖学者…

MIT 6.5840(6.824) Lab2:Key/Value Server 设计实现

1 实验要求 在本次 Lab 中&#xff0c;你将在单机上构建一个键/值服务器&#xff0c;以确保即使网络出现故障&#xff0c;每个操作也只能执行一次&#xff0c;并且操作是可线性化的。 客户端可以向键/值服务器发送三个不同的 RPC&#xff1a; Put(key, value) 、 Append(key,…

【Linux】进程间通信(一)---- 匿名管道

【Linux】进程间通信&#xff08;一&#xff09;---- 匿名管道 一.序1什么是进程间通信2.进程间通信的标准3.为什么需要进程通信 二.匿名管道1.原理2.使用3.四种情况4.五个特点 一.序 1什么是进程间通信 进程间通信 通信我们大致知道是啥&#xff0c;就是互相传递信息 那进程…

【软考】设计模式之组合模式

目录 1. 说明2. 应用场景3. 结构图4. 构成5. 优点6. 缺点7. java示例 1. 说明 1.将对象组合成树型结构以表示“部分-整体”的层次结构。2.Composite使得用户对单个对象和组合对象的使用具有一致性。3.组合模式&#xff08;Composite Pattern&#xff09;是一种结构型设计模式 …

德昂信息-Wyn助力构建HR人员信息分析看板

”葡萄城的Wyn商业智能软件产品为德昂信息提供了强大的支持&#xff0c;借助Wyn商业智能软件&#xff0c;可以通过可视化方式展示整个公司的人员信息及其分析看板。“ ——德昂信息技术(北京)有限公司 公司简介 德昂信息技术(北京)有限公司&#xff08;以下简称德昂信息&…

STM32_HAL_TIM_通用计时器_实现计时

项目思路 1使用定时器计数每秒一次 2使用一个变量记录定时器响应多少次 3使用UART将记录的次数发出 1STM32Cude设置 1配置时钟源 2打开UART 3打开TIM2 3.1界面介绍 3.2选项介绍 Slave Mode&#xff08;从模式&#xff09;&#xff1a;当设备被设置为从模式时&#xff0c…

计算机组成原理(超详解!!) 第八节 总线系统

1.总线的概念和结构形态 1.总线&#xff08;BUS&#xff09;的基本概念 是构成计算机系统的互联机构&#xff0c;是多个系统功能部件&#xff08;运算器、控制器、存储器、输入/输出设备&#xff09;之间进行数据传送的公共通路。 由传输信息的电路和管理信息传输的协议组成…

数据结构【顺序表】

文章目录 1.顺序表的概念线性表物理结构逻辑结构 2.顺序表的分类2.1静态顺序表2.2动态顺序表 3.顺序表接口的实现头文件(SQList.h)如下源文件初始化顺序表销毁顺序表插入扩容尾插头插 封装扩容函数删除尾删头删 查找元素在指定位置前插入数据情况一(指定的位置不是首元素)情况二…

【机器学习】逻辑回归:智能垃圾邮件分类实例

逻辑回归&#xff1a;智能垃圾邮件分类的利器 一、引言二、逻辑回归概述三、垃圾邮件分类实例数据准备特征选择与建模 四、总结与展望 一、引言 随着互联网的迅猛发展&#xff0c;电子邮件已成为人们日常生活和工作中不可或缺的一部分。然而&#xff0c;与此同时&#xff0c;垃…

[蓝桥杯]真题讲解:合并数列(双指针+贪心)

[蓝桥杯]真题讲解&#xff1a;班级活动&#xff08;贪心&#xff09; 一、视频讲解二、正解代码1、C2、python33、Java 一、视频讲解 [蓝桥杯]真题讲解&#xff1a;合并数列&#xff08;双指针贪心&#xff09; 二、正解代码 1、C #include<bits/stdc.h> #define in…

k8s 网络组件详细 介绍

目录 一 k8s 有哪些网络组件 二 k8s 网络概念 1&#xff0c; k8s 三种网络 2&#xff0c;K8S 中 Pod 网络通信 2.1 Pod 内容器与容器之间的通信 2.2 同一个 Node 内 Pod 之间的通信 2.3 不同 Node 上 Pod 之间的通信 三 Flannel 网络组件 1&#xff0c;Flannel …

K8s源码分析(一)-K8s调度框架及调度器初始化介绍

本文首发在个人博客上&#xff0c;欢迎来踩&#xff01; 文章目录 调度框架介绍K8s scheduler 介绍K8s scheduler的初始化Cobra介绍K8s scheduler中初始化的源代码解析 调度框架介绍 这是官方对于v1.27调度框架的介绍文档&#xff1a;https://v1-27.docs.kubernetes.io/docs/…

使用vue3+ts+vite从零开始搭建bolg(五):layout(持续更新中)

五、layout搭建 5.1静态搭建 在src下创建如图文件夹 这里用logo举例&#xff0c;在scripts里export <script lang"ts">export default {name: Logo,}</script> 然后在layout里引入 //引入左侧菜单顶部用户信息 import Logo from ./logo/index.vue 接…