Apache Flink文件上传漏洞(CVE-2020-17518)漏洞代码分析

漏洞复现参考如下文章

Apache Flink文件上传漏洞(CVE-2020-17518)漏洞复现分析_文件上传漏洞复现cve-CSDN博客

分析代码的话,首先找到漏洞修复的邮件

漏洞详情,可以看到漏洞概要,影响的版本,漏洞描述以及如何修复

然后根据代码修复ID:a5264a6f41524afe8ceadf1d8ddc8c80f323ebc4,去github上面找到对应的修复代码

代码修复地址

可以看到,最开始是直接使用fileUpload.getFilename()作为地址,修改后是改成了new File(fileUpload.getFilename()).getName()作为地址,也就是说最开始是直接使用请求中传入的filename去拼接上传路径,最终导致了跨目录上传的问题。

那么我们看一下修改之后的代码做了哪些处理,可以看到对../进行了过滤

看一下getName的源码,顺便打下断点,我们看到就是使用lastindexof方法找最后一个分隔符,如果没有找到那么就全部返回,如果找到了那么从分隔符开始进行分割

所以,该漏洞的最根本原因,还是在于对外部传入的文件名或者文件路径进行校验,从而导致了跨目录上传的问题,正常要进行归一化处理,只保留最后的文件名和后缀即可

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

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

相关文章

【Linux笔记】文件描述符与重定向

一、Linux关于文件操作的一些系统调用 1、open和close 我们在C语言阶段已经学过很多文件操作的函数,今天我们要来看看操作系统中对于文件是怎么操作的。 1.1、open与close的用法 C语言的库函数中有很多关于文件操作的接口,包括fopen、fclose、fprint…

Docker容器引擎镜像创建

目录 一、镜像的创建 (一)基于现有镜像创建 1.启动一个镜像,在容器里做修改 2.将修改后的容器提交为新的镜像 (二)基于本地模板创建 (三)基于Dockerfile 创建 1.联合文件系统&#xff08…

MR混合现实情景实训教学系统在石油化工课堂上的应用

在石油化工课堂中,MR混合现实情景实训教学系统为学生提供了一个真实的实训环境。学生可以在系统中模拟各种石油化工生产流程,从原料的提取、加工到产品的包装和运输,都可以在模拟环境中进行操作。同时,系统还会根据学生的操作反馈…

联通森林2

时间限制&#xff1a;1秒 内存限制&#xff1a;128M 题目描述 输入若干森林&#xff0c;保证数据合法&#xff0c;请你判断某两个点是否在同一棵树上。 输入描述 第一行两个数n,m和q (0<m<n<1000000)&#xff0c;(1<q<10000)表示当前森林的节点个数为…

配置alias(设置别名@)

Vite配置alias需要两步进行&#xff08;TS项目&#xff09; 1、修改vite.config.ts&#xff08;让程序支持&#xff09;2、修改tsconfig.json&#xff08;让编辑器支持&#xff09;修改vite.config.ts import { defineConfig } from vite import path from path ​ function…

五大架构之一:系统架构数据流风格

系统架构数据流风格详细介绍 系统架构数据流风格是一种软件体系结构风格&#xff0c;它强调了系统内部不同部分之间的数据流动。这种风格侧重于描述系统中的数据处理过程&#xff0c;以及数据是如何从一个组件传递到另一个组件的。以下是系统架构数据流风格的详细介绍&#xff…

redisTemplate.opsForValue()

redisTemplate ​在Spring Data Redis中&#xff0c;redisTemplate 是一个非常重要的组件&#xff0c;它为开发者提供了各种操作 Redis 的方法。对于 opsForValue() 方法&#xff0c;它是用来获取一个操作字符串值的操作对象。这意味着你可以使用它来执行各种字符串相关的操作…

[文本挖掘和知识发现] 02.命名实体识别之基于BiLSTM-CRF的威胁情报实体识别万字详解

作者于2023年8月新开专栏——《文本挖掘和知识发现》&#xff0c;主要结合Python、大数据分析和人工智能分享文本挖掘、知识图谱、知识发现、图书情报等内容。这些内容也是作者《文本挖掘和知识发现&#xff08;Python版&#xff09;》书籍的部分介绍&#xff0c;本书预计2024年…

0.1 qt的信号槽机制在pyside6中的应用

一、什么是信号/槽 Qt中QObject之间需要进行通信&#xff0c;信号槽就是这种通信机制。简单来说信号槽就像是电视机和遥控器&#xff0c;你按遥控器发出指令&#xff0c;电视机作出相应的反应。 在界面开发中拿按钮来举例&#xff0c;当你点击按钮的时候&#xff0c;“点击”就…

前端面试题-网络请求-http请求方式-http状态码-url地址到浏览器渲染过程-跨域-请求测试工具-http和https

前端面试题-网络请求-http请求方式-http状态码-url地址到浏览器渲染过程-跨域-请求测试工具 http请求方式http的状态码有哪些&#xff1f;分别代表什么意思&#xff1f;从输入一个url地址到浏览器完成渲染的整个过程解决跨域的三种方式请求测试工具-postman的使用http和https h…

公司人才招聘工作开展难点分析

某国有资本运营公司位于北方某省级城市。在2019年&#xff0c;北方某市的当地政府提出组建专业化国有资本投资运营公司&#xff0c;大力开展专业化资本运营&#xff0c;推动国有资本进退留转市场出清和专业化重组的政策方针。为提高国有资产的管理运营能力&#xff0c;该市成立…

KAFKA高可用架构涉及常用功能整理

KAFKA高可用架构涉及常用功能整理 1. kafka的高可用系统架构和相关组件2. kafka的核心参数2.1 常规配置2.2 特殊优化配置 3. kafka常用命令3.1 常用基础命令3.1.1 创建topic3.1.2 获取集群的topic列表3.1.3 获取集群的topic详情3.1.4 删除集群的topic3.1.5 获取集群的消费组列表…

透视AI的智慧之源-解锁可解释性AI(XAI)

可解释性AI&#xff08;XAI&#xff09;是指使人类用户能够理解并信任机器学习算法创建的结果和输出的技术和方法。它旨在将AI模型从黑盒转换为白盒&#xff0c;使人们能够理解AI模型如何做出决策&#xff0c;包括决策的原因、方法和内容。 一、可解释性AI的定义 可解释性AI的…

AutoSAR配置与实践(深入篇)12.2 Time Synchronization[Adaptive Autosar]

AutoSAR配置与实践(深入篇)12.2 Time Synchronization[Adaptive Autosar] Time Synchronization一、TS典型应用场景二、CP和AP时间同步对比三、时间同步基础知识四、TBR部分参数说明五、 TS功能说明5.1 基本说明5.2 时间纠正计算说明5.3 时间验证Time Synchronization ->…

001集—shapefile(.shp)格式详解——arcgis

一、什么是shapefile Shapefile 是一种用于存储地理要素的几何位置和属性信息的非拓扑简单格式。shapefile 中的地理要素可通过点、线或面&#xff08;区域&#xff09;来表示。包含 shapefile 的工作空间还可以包含 dBASE 表&#xff0c;它们用于存储可连接到 shapefile 的要…

1 月 30 日算法练习-思维和贪心

文章目录 重复字符串翻硬币乘积最大 重复字符串 思路&#xff1a;判断是否能整除&#xff0c;如果不能整除直接退出&#xff0c;能整除每次从每组对应位置中找出出现最多的字母将其他值修改为它&#xff0c;所有修改次数即为答案。 #include<iostream> using namespace …

组件如何组织以提升维护性、扩展性

文章目录 一、提升组件的维护性和扩展性1.1、单一职责原则&#xff08;Single Responsibility Principle&#xff09;1.2、松耦合&#xff08;Loose Coupling&#xff09;1.3、高内聚&#xff08;High Cohesion&#xff09;1.4、模块化设计&#xff08;Modular Design&#xff…

LeetCode-题目整理【11】:回溯算法

下面这些题目的解答&#xff0c;都使用到回溯算法解答&#xff0c;通过找到目标条件&#xff0c;满足之后就可以返回&#xff1b;另外可以使用 剪枝&#xff0c;减少调用递归的次数&#xff0c;减少时间。 电话号码的字母组合 中等 给定一个仅包含数字 2-9 的字符串&#xff0c…

从零开始复现GPT2(三):词表,Tokenizer和语料库的实现

源码地址&#xff1a;https://gitee.com/guojialiang2023/gpt2 GPT2 模型词表TokenizerTokenizer 类_normalize 方法_tokenize 方法_CHINESE_CHAR_RANGE 和 _PUNCTUATION_RANGE 数据集语料库TokenizedCorpus 类 模型 词表 定义了一个名为 Vocab 的类&#xff0c;用于处理和管理…

【项目日记(六)】第二层: 中心缓存的具体实现(下)

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:项目日记-高并发内存池⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你做项目   &#x1f51d;&#x1f51d; 开发环境: Visual Studio 2022 项目日…