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

news2024/11/15 13:37:00

漏洞复现参考如下文章

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

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

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

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

代码修复地址

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

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

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

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

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

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

相关文章

Docker核心教程

1. 概述 官网:https://docs.docker.com/ Docker Hub 网站:https://hub.docker.com/ 容器较为官方的解释: 一句话概括容器:容器就是将软件打包成标准化单元,以用于开发、交付和部署。 容器镜像是轻量的、可执行的独立…

嵌入式学习第十四天!(结构体、共用体、枚举、位运算)

1. 结构体: 1. 结构体类型定义: 嵌入式学习第十三天!(const指针、函数指针和指针函数、构造数据类型)-CSDN博客 2. 结构体变量的定义: 嵌入式学习第十三天!(const指针、函数指针和…

Meta开源Code Llama 70B,缩小与GPT-4之间的技术鸿沟

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

【C++基础入门】一、C++初识

一、C初识 1.1 第一个C程序 编写一个C程序总共分为4个步骤 创建项目创建文件编写代码运行程序 1.1.1 创建项目 ​ Visual Studio是我们用来编写C程序的主要工具,我们先将它打开 1.1.2 创建文件 右键源文件,选择添加->新建项 给C文件起个名称&am…

vue3-hand-mobile

当我写完手势移动事件后,我又通过svg的方法添加了一段文字和polygon。当我在这个蓝色的polygon上滑动手势的时候,会报错。 可能这个bug只是我个人的代码导致的。但是我觉得vue3-hand-mobile插件的这一段代码写的有问题。 我通过circular-json库修复了这…

petalinux2022.2启动文件编译配置

安装必要运行库: sudo apt-get install iproute2 gawk python3 python sudo apt-get install build-essential gcc git make net-tools libncurses5-dev tftpd sudo apt-get install zlib1g-dev libssl-dev flex bison libselinux1 gnupg wget git-core diffstat sudo apt-ge…

IDEA Java常用快捷键

目录 main方法快捷键:psvm输出语句:sout复制行:ctrld删除行:ctrly单行注释或多行注释 : Ctrl / 或 Ctrl Shift /for循环 直接 :fori代码块包围:try-catch,if,while等 ctrlaltt缩进&#xff1…

CentOS 7 部署 ZeroTier Moon 节点

ZeroTier是一套使用UDP协议构建的SD-WAN网络软件,其主要有三部分组成:行星服务器Planet、月亮服务器Moon、客户端节点LEFA,行星服务器是ZeroTier的根节点,可以采用ZeroTier官方的服务器,也可以使用开源代码自行搭建 月…

linux平台 LED情报板网关项目总结

LED情报板目前已经基本稳定 主要存在两个版本LED1.5 和LED2 两个版本的主要差别是 : 1.1.5的配置文件存在本地 2.0的存在平台 需要通过接口从平台获取 2.1.5的下发消息的时候需要同步返回 2.0的是异步返回,所以1.5的要尽可能完成 不然会导致发 布平台…

Oracle 锁的概念以及分类

1.什么是锁 数据库是一个庞大的多用户数据管理系统, 同一时刻可能有多个用户同时操作。事务的分离性要求当前事务不能影响其他的事务,所以多个会话操作同一个资源时,数据库会利用锁确保他们像队列一样一次执行。利用来锁消除多个用户操作同一…

Jmeter分布式场景

Jmeter分布式 1. 为什么使用Jmter分布式测试 1.1 需求 对学院接口(查询学院-所有)进行1000用户并发访问,测试服务器处理批量请求能力1.2 现状 我们单台电脑由于配置(CPU、内存)问题,最模拟500用户时,就出现卡死现象按照一般的压力机配置&…

opencv学习 特征提取

内容来源于《opencv4应用开发入门、进阶与工程化实践》 图像金字塔 略 拉普拉斯金字塔 对输入图像进行reduce操作会生成不同分辨率的图像,对这些图像进行expand操作,然后使用reduce减去expand之后的结果,就会得到拉普拉斯金字塔图像。 …

6.2 静态内存分配模式

Bruce Powel Douglass大师介绍-CSDN博客https://blog.csdn.net/ChatCoding/article/details/134665868 嵌入式软件开发从小工到专家-CSDN博客https://blog.csdn.net/ChatCoding/article/details/135297955 C嵌入式编程设计模式源码-CSDN博客https://blog.csdn.net/ChatCoding…

STM32单片机基本原理与应用(四)

直流电机驱动控制原理 1、电机正反转控制 在STM32中,直流电机的正反转控制主要通过改变电机输入电源的极性来实现。当电机的电压极性发生变化时,电机的旋转方向也会相应改变。在硬件电路中,可以通过继电器或晶体管等电子开关来切换电机的电源…

消息中间件RabbitMQ介绍

一、基础知识 1. 什么是RabbitMQ RabbitMQ是2007年发布,是一个在AMQP(高级消息队列协议)基础上完成的,简称MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法,由Erlang(专门针对于大…

【Tomcat与网络4】Tomcat的连接器设计

目录 1 如何设计一个灵活可靠的连接器 2 主要组件介绍 在上一篇,我们介绍了Tomcat提供服务的整体结构,本文我们一起来看一下Tomcat的连接器的设计。 在前面我们提到Tomcat主要完成两个功能: 处理 Socket 连接,负责网络字节流与…

中国的茶文化:现代生活中的茶文化

中国的茶文化:现代生活中的茶文化 引言 在现代社会的快节奏生活中,茶文化并未随时间流逝而褪色,反而以其独特的方式融入了全球各地人们的日常生活。它超越了饮品本身的范畴,成为一种连接历史、人文与现代生活方式的艺术形式。本文…

VRRP负载平衡

1.构图 2.实验 2.1如图提示配置pc1-pc4 掩码:255.255.255.0网关均设置为192.168.1(\2).254 2.2配置sw1-sw2 [sw1]port-group 1 //创建接口组,组号是1[sw1-port-group 1]group-member gigabitethernet 0/0/1 to gigabitethernet 0/0/3 //添加组成员,从…

Unity 设置鼠标

前言 本章主要对鼠标图标样式还有鼠标显隐进行设置 图标样式的设置 代码控制 有时候需要有改变鼠标样式的需求可以使用如下代码 Cursor.SetCursor(this.mouseTexture, Vector2.zero, CursorMode.Auto); 传入的要替换的图标偏移量允许您在支持的平台上使用硬件光标&#xff0…

【Javaweb】【C00157】基于SSM的宠物护理预定系统(论文+PPT)

基于SSM的宠物护理预定系统(论文PPT) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于ssm的宠物护理预订系统 本系统分为前台系统模块、后台管理员模块以及后台会员用户模块 其中前台系统模块:当游客打开系统的网址后&…