pikachu靶场-3 跨站请求伪造(CSRF)

news2024/10/6 10:40:27

跨站请求伪造(CSRF)

Cross-site request forgery简称为”CSRF“

在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接)

然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击也就完成了。

所以CSRF攻击也被称为”one click“攻击。

我们判断一个网站是否存在CSRF漏洞,其实就是判断其对关键信息(比如密码等敏感信息)的操作(增删改)是否容易被伪造。

CSRF与XSS的区别:

CSRF是借用户的权限完成攻击,攻击者并没有拿到用户的权限,而XSS是直接盗取了用户的权限,然后实施破坏。

如何确认一个web系统存在CSRF漏洞:

  1. 对目标网站增删改的地方进行标记,并观察逻辑,判断请求是否可以伪造

    ——比如修改管理员账号时,并不需要验证旧密码,导致请求容易被伪造;

    ——比如对于敏感信息的修改并没有使用安全的token验证,导致请求容易被伪造;

  2. 确认凭证的有效期(这个问题会提高CSRF被利用的概率)

    ——虽然退出或者关闭了浏览器,但cookie仍然有效,或者session并没有及时过期,导致CSRF攻击变得简单。

CSRF(get)

我们进入CSRF(get)这关,进来以后让我们输入用户名和密码

image-20221211100546671

我们点一下提示,可以获取到用户名和密码,我们这里随便用一个就行

image-20221211100506367 image-20221211100722502

我们登录进来以后,点击修改个人信息就可以随便修改。

image-20221211100834144

那么我们如何知道这个地方是否存在CSRF漏洞呢?

这里其实是一个敏感信息的修改,我们打开burp看一下刚才的get请求

image-20221211101231434
GET /pikachu-master/vul/csrf/csrfget/csrf_get_edit.php?sex=girl&phonenum=12345678922&add=taiyuan&email=lucy%40pikachu.com&submit=submit

这个get请求实际上是向后台传递了刚才的所有参数,而且我们并没有在这个提交的参数里看到csrf token,也就是说后台这里是没有做一些防CSRF的措施的,同时他又是通过get请求来提交的,如果有人相对它进行修改,他就只需要获取到这个链接,然后就可以对一些地方进行修改,然后通过邮件,聊天工具等发送给受害者,受害者点击后就会被修改信息。实际上,在lucy敲下回车键的时候,他的浏览器就会以他现在的登录态向后端发送这个请求,这样他的个人信息就被修改掉了。

get型的CSRF是比较好利用的,我们只需要伪造这个链接,然后把我们想要修改的参数修改掉,然后发送给带登录态的攻击者,他只要点击,这个请求就完成了,这个攻击也完成了。

CSRF(post)

如果是post型的CSRF呢,我们看一下:

我们还是登录去修改信息,然后提交,去burp看一下数据包:

image-20221211102959591

这次的提交是通过post方式去传播的,所有的请求是在这个请求体里面去传输的,也就是说我们没办法通过url去伪造这个请求。这个时候利用方法其实和我们之前那个XSS是一样的,我们需要去布置一个自己的站点,然后在这个站点上做一个表单,然后让lucy去点我们这个恶意网站的url,去向存在csrf漏洞的这个页面提交请求。

token详解及防范措施

token是如何防止CSRF的?

CSRF的主要问题是敏感操作的链接容易被伪造,那么如何让这个链接不容易被伪造呢?

—每次请求,都增加一个随机码(需要够随机,不容易伪造),后台每次对这个随机码进行验证!

image-20221211104127587

我们可以看到这个请求和我们之前的get请求基本一样,但是多了一个token值

image-20221211104442349

我们通过开发者工具可以看到,点击修改按钮会访问一个token_get_edit.php这个文件,这个文件就会生成一个token,它会把这个token去echo到前端。

image-20221211104713111

我们可以通过查看表单看到,这里它埋了一个token,这个是隐藏的,前端是看不到的,但是它其实是在你的源码里面,你在提交的时候,token也会被提交,后台会对这个token进行一个验证,一样才会提交,不一样的话就不允许提交。token是随机的并且是唯一的。这样别人的伪造链接的token是验证不过去的,所以token有效的防止了CSRF。

防范措施
  • 增加token验证(常用的做法)

    1. 对关键操作增加token参数,token值必须随机,每次都不一样;
  • 关于安全的会话管理(避免会话被利用)

    1. 不要在客户端保存敏感信息(比如身份认证信息);
    2. 操作完成直接关闭,退出时,要把后台登录态注释掉;
    3. 设置会话过期机制,比如15分钟内无操作,则自动登陆超时;
  • 访问控制安全管理

    1. 敏感信息的修改时需要对身份进行二次认证,比如修改账号时,需要判断旧密码;
    2. 敏感信息的修改使用post,而不是get;
    3. 通过http头部中的referer来限制原页面,一定要来自本域;
  • 增加验证码

    一般用在登录(防暴力破解),也可以用在其他重要信息操作的表单中(需要考虑可用性);

st,而不是get;
3. 通过http头部中的referer来限制原页面,一定要来自本域;

  • 增加验证码

    一般用在登录(防暴力破解),也可以用在其他重要信息操作的表单中(需要考虑可用性);

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

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

相关文章

Java基于springboot+vue+elementUI某高校学院资产管理系统

项目介绍 独立学院资产管理系统主要设计的用户范围是:注册用户、管理员。每一个角色在系统中即可看作是不同的子系统,其所拥有的功能权限是不一致的。系统架构包括后台数据库的建立和维护以及应用程序。系统的主要功能模块主要有登录功能模块&#xff0c…

01_01_Go语言基础知识

01_01_Go语言基础知识定义变量内建变量类型强制类型转换常量与枚举要点总结条件语句if 举例switch 举例for 循环函数指针数组定义变量 使用 var 关键字 使用 var 关键字, 可以放在函数内, 或直接放在包内均可 // 定义 a, b, c 三个变量 类型都是 bool 变量可以不赋初始值 v…

别搞错了,nonTransitiveRClass 不能解决资源冲突!

前言 nonTransitiveRClass:非传递性 R 类的属性,在 gradle.properties 文件里使用。 不少开发者可能听过它,但了解可能仅限于是对 R 文件做了优化,甚至以为它可以解决资源冲突!但它到底做了什么优化、能否解决资源冲突…

【序列召回推荐】(task2)序列召回GRU4Rec模型

学习总结: 一般的RNN模型我们的输入和输出是什么,我们对RNN输入一个序列 X[x1,x2,...,xn]X [x^1,x^2,...,x^n]X[x1,x2,...,xn] ,注意我们序列中的每一个节点都是一个向量,那么我们的RNN会给我们的输出也是一个序列 Y[y1,y2,...,…

【python黑帽子】——(一)搭建扫描器入门介绍

作者名:Demo不是emo 主页面链接:主页传送门创作初心:舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷座右…

Python安装教程

Python安装 1.浏览器打开网址:www.python.org 2.根据电脑系统选择下载 3.确定电脑系统属性,此处我们以win10的64位操作系统为例 4.安装python 3.6.3 双击下载的安装包 python-3.6.3.exe 注意要勾选:Add Python 3.6 to PATH 点击 Customize installat…

4 种经典方法IB 数学证明题分享给大家

学习数学时感觉最有意思的题目就是证明题了,证明题能练习一种能力: 你知道一件事情时对的,怎么说清楚它是对的;你认为一件事情时错的,怎么说清楚它是错的。 这和生活中的辩论有点像,要有理有据地说清楚原因…

[附源码]Node.js计算机毕业设计蛋糕店会员系统Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

Servlet的生命周期

servlet 1.servlet是什么 2.servlet生命周期 3. servlet 工作原理 4 .ServletContextListener 什么是Servlet? Servlet是JavaWeb的 三大组件之一 ,它属于动态资源。Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理&…

基于RSS和TOA两种方法的无线传感器网络定位测量算法matlab仿真

up目录 一、理论基础 二、核心程序 三、测试结果 一、理论基础 无线传感器网络(Wireless Sensor Networks, WSN)是一种分布式传感网络,它的末梢是可以感知和检查外部世界的传感器。WSN中的传感器通过无线方式通信,因此网络设置灵活,设备位…

去哪儿旅行微服务架构实践,全文带图加详细解析,带你多方面了解

文章目录一、背景介绍二、微服务架构模式的最佳实践三、微服务开发效率提升实践四、服务治理实践五、ServiceMesh 尝试六、总结今天我带来的主题是去哪儿旅行 微服务架构实践。我将从以下几个方面进行介绍:背景介绍微服务架构模式的最佳实践微服务开发效率的提升实践…

前台用户注册_发送邮件配置

在用户注册成功后,要向用户的邮箱发送一封激活邮件,发送邮件需要在系统中配置发件人,同学们使用自己的邮箱作为发件人即可。 配置邮箱第三方登录。 我们在系统中使用邮箱发送邮件属于第三方登录,而市面上的邮箱默认是不能第三方…

自监督学习系列(四):基于蒸馏的图片掩码学习

前文 好久不见!自监督系列文章继续更新啦!在前几期的文章我们介绍了基于辅助任务,对比学习,和图片掩码学习的自监督学习范式 (对比学习,图片掩码学习其实也可以归属于基于辅助任务的自监督学习,由于这两类…

百度安全怎么查询,怎么彻底解决百度安全弹出的风险提示

当我们在百度搜索自己的网站时,搜索结果中出现各种风险提示,比如安全联盟提醒您:该网站可能存在安全风险,请谨慎访问! 别慌!今天我们就来解决百度安全弹出的风险提示的问题。 第一步:查询网站…

Python 自动化测试框架unittest与pytest的区别

这篇文章主要讲unittest与pytest的区别,pytest相对unittest而言,代码简洁,使用便捷灵活,并且插件很丰富。 Unittest vs Pytest 主要从用例编写规则、用例的前置和后置、参数化、断言、用例执行、失败重运行和报告这几个方面比较…

传奇GOM引擎微端架设教程

传奇GOM引擎微端架设教程 GOM引擎架设微端需要准备好微端程序,用网站下载在服务器的版本 (注:本文章图有打码处因平台GZ原因需打码望读者理解) Mirserver文件一般都是自带微端程序的,偶尔也有版本没有微端程序那我们…

基于多目标遗传算法(NSGA-II)和多目标粒子群算法(MOPSO)的分布式仿真系统双目标负载平衡模型【Matlab代码实现】

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清…

Oracle单机部署:GI安装

Oracle单机部署:GI安装存储配置ASM磁盘空间评估GI单机安装配置GI图形化安装流程安装后测试🐬 使用grid用户来安装GI。 存储配置 Oracle存储支持Oracle ASM、Oracle ACFS、本地文件系统、网络文件系统(NFS/NAS)、Oracle Memory S…

RK3588平台开发系列讲解(RTC篇)RTC的使用

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、RTC简介二、HYM8563驱动配置2.1、设备树配置2.1、驱动代码三、RTC的使用3.1、SYSFS接口3.2、PROCFS接口3.3、IOCTL接口沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍RK3588平台RTC驱动及使用方…

玩以太坊链上项目的必备技能(基本类型转换以及推断-Solidity之旅六)

基本类型之间的转换 熟悉过其他编程语言的您,对基本类型之间的转换并不陌生吧!当然,这基本类型进行转换可分为隐式转换和显示转换。 隐式转换 Solidity 支持隐式转换,通过编译器自动进行转换,而不要开发人员的干涉&…