【全网首篇】Copyparty 路径遍历漏洞 CVE-2023-37474 漏洞分析

news2025/3/10 11:12:13

图片


Copyparty是一个便携式文件服务器

Copyparty 路径遍历漏洞 CVE-2023-37474 漏洞分析,这个漏洞研究了一些时间,不过这个不难

漏洞复现分析环境

Copyparty测试版本:1.8.0和1.8.2

系统:Windows10 和 Linux

运行环境:Python3.11

漏洞分析

拿到程序,发现从代码的角度来看,代码量很小

图片

可以看见就300行左右

看一下文件还是挺大的

图片

估计其他的好多需要的库都存在下面的注释里面

启动程序,看见启动日志里面有一个临时文件

图片

发现确定是叫代码放到了那个注释里面,然后叫这个运行代码放到了临时文件里面

图片

看见里面有源码我们开始分析

然后搜索看到了发现一个很可能会存在的漏洞地方

图片

然后拿到路径后进入self.tx_file(static_path)

图片

传给这个变量

图片

图片

图片

open_func(*open_args) 使用了 * 操作符,它将 open_args 列表中的元素解包成单独的参数,然后传递给 open_func 函数,最终读取文件造成了这个漏洞

图片

看一下修复的代码

修复后的代码先创建了一个 path_base 变量,用来存储静态文件所在目录的绝对路径,然后使用 os.path.join() 将 path_base 和 self.vpath[5:] 进行拼接,得到静态文件的完整路径 static_path。接着,通过 absreal() 函数确保 static_path 是绝对路径,最后使用 startswith() 方法检查 static_path 是否以 path_base 开头,如果不是,说明存在路径遍历漏洞,记录日志并返回 404 错误页面。

漏洞POC

curl -i -s -k -X  GET 'http://127.0.0.1:3923/.cpr/%2Fetc%2Fpasswd'

图片

漏洞修复

  • • 将 copyparty 升级至 1.8.2 及以上版本

文末

关注公众号"知攻善防实验室",后台回复"交流群"获取技术交流群链接

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

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

相关文章

helm部署gitlab-runner问题解决

关于.gitlab-ci.yml中build镜像时,docker守护进程未启动错误 问题截图 解决方法 conf.toml添加 [[runners.kubernetes.volumes.host_path]]name "docker"mount_path "/var/run/docker.sock"read_only falsehost_path "/var/run/dock…

PyCharm - Run Debug 程序安全执行步骤

PyCharm - Run & Debug 程序安全执行步骤 1. Run2. DebugReferences 1. Run right click -> Run ‘simulation_data_gene…’ or Ctrl Shift F10 2. Debug right click -> Debug ‘simulation_data_gene…’ 在一个 PyCharm 工程下,存在多个 Pytho…

Spin Image自旋图像描述符可视化以及ICP配准

一、Spin Image自旋图像描述符可视化 C #include <pcl/point_types.h> #include <pcl/point_cloud.h> #include <pcl/search/kdtree.h> #include <pcl/io/pcd_io.h> #include <pcl/features/normal_3d_omp.h>//使用OMP需要添加的头文件 #inclu…

【机器学习笔记】12 聚类

无监督学习概述 监督学习 在一个典型的监督学习中&#xff0c;训练集有标签&#x1d466; &#xff0c;我们的目标是找到能够区分正样本和负样本的决策边界&#xff0c;需要据此拟合一个假设函数。无监督学习 与此不同的是&#xff0c;在无监督学习中&#xff0c;我们的数据没…

Json格式文件

1.把Java对象转换成Json格式 1.1.导入依赖 这里推荐一个插件Jackson&#xff0c;其提供的类可以让Java的类转换成Jason格式文件 <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><vers…

记录一次安卓手机使用wm命令错误参数,导致的屏幕大小错误以及挽救

使用安卓终端管理器运行wm命令调整屏幕大小 wm size wxh原本分辨率1024x2048&#xff0c;失手调成了800x600&#xff0c;手机屏幕一下子变成800x600 wm size 800x600wm命令重启后依旧会保持分辨率&#xff0c;所以重启手机没有用。 看锁屏界面连解锁图案都没了&#xff0c;通…

苹果公司宣布,为Apple Vision Pro打造了超过600款新应用

深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领域的领跑者。点击订阅&#xff0c;与未来同行&#xff01; 订阅&#xff1a;https://rengongzhineng.io/ 。 2月…

Java学习day13

流&#xff08;Stream&#xff09; 流是一个非常强大的概念&#xff0c;它提供了一种高效且便捷的方式来处理集合数据。你可以将流看作是一系列数据项的管道&#xff0c;你可以对这些数据进行各种操作&#xff0c;如过滤、映射、排序和归约。 流的创建 在Java中&#xff0c;…

MySQL事务的概念

一、事务定义 事务&#xff1a;事务是一个最小的不可在分的工作单元&#xff1b;通常一个事务对应一个完整的业务(例如银行账户转账业务&#xff0c;该业务是一个最小的工作单元)一个完整的业务需要批量的DML(insert、update、delete)语句共同联合完成。事务只和DML语句有关&a…

新款条码扫描数据采集终端 仓库盘点机 快递手持机 PDA手持终端

而随着技术的不断进步&#xff0c;数据采集终端也在不断地升级和优化。新款条码扫描数据采集终端、仓库盘点机PDA手持终端等高性能智能数据采集终端&#xff0c;正是在这样的背景下应运而生。 这些高性能智能数据采集终端&#xff0c;采用了最先进的技术和设计&#xff0c;具有…

计算机设计大赛 深度学习中文汉字识别

文章目录 0 前言1 数据集合2 网络构建3 模型训练4 模型性能评估5 文字预测6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习中文汉字识别 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xf…

14. Longest Common Prefix(最长公共前缀)

问题描述 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 “”。 问题分析 方法一&#xff1a;我们可以假设一个字符串是最长的公共子串&#xff0c;然后去验证&#xff0c;如果此串被验证了&#xff0c;再增加一位字符进行验…

SpringBoot2——工程创建、启动原理分析、配置文件、集成框架

一、SpringBoot简介 1.1 Spring Boot概述 Spring Boot 是所有基于 Spring Framework 5.0 开发的项目。Spring Boot 的设计是为了让你尽可能快的跑起来 Spring 应用程序&#xff0c;并且尽可能减少你的配置文件。 设计目的&#xff1a; 用来简化 Spring 应用的初始搭建以及开…

Java实现停车场收费系统 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 停车位模块2.2 车辆模块2.3 停车收费模块2.4 IC卡模块2.5 IC卡挂失模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 停车场表3.2.2 车辆表3.2.3 停车收费表3.2.4 IC 卡表3.2.5 IC 卡挂失表 四、系统实现五、核心代码…

STM32F1 - 系统时钟SysTick

SysTick 1> SysTick硬件框图2> SysTick的时钟源3> 1ms定时_中断方式4> 思考&#xff1a;无符号数 0 - 255 ?相关资料 1> SysTick硬件框图 SysTick属于Cotex-M3&#xff0c;是CPU外设&#xff1b; SysTick: 位宽24bit&#xff0c; 递减计数&#xff0c;自动重装…

Debezium发布历史136

原文地址&#xff1a; https://debezium.io/blog/2023/01/06/change-data-capture-with-questdb-and-debezium/ 欢迎关注留言&#xff0c;我是收集整理小能手&#xff0c;工具翻译&#xff0c;仅供参考&#xff0c;笔芯笔芯. Change Data Capture with QuestDB and Debezium …

UE5中的DataTable说明

创建DataTable 在编辑器中创建 在文件夹空白处右击&#xff0c;选择Miscellaneous/DataTable&#xff0c;如图&#xff1a; 使用代码创建 // 创建DataTable实例 UDataTable* MyDataTable NewObject(); // 创建一个行结构体 UStruct* RowStruct UStruct::CreateEmpty(); // 添…

UE蓝图 Set节点和源码

文章目录 Set节点说明相关源码 Set节点说明 UE蓝图中的Set节点是用于对变量进行赋值操作的重要组件。它具有多种功能和作用&#xff0c;具体如下&#xff1a; 变量赋值&#xff1a;Set节点可以用于设置不同类型的变量值&#xff0c;包括整数、浮点数、布尔值、字符串等。在游戏…

c++开发基础之保障多线程编程中的原子操作InterlockedIncrement和InterlockedDecrement用法详解

一、介绍 在多线程编程中&#xff0c;确保对共享变量进行原子操作是至关重要的。当多个线程同时访问和修改同一共享资源时&#xff0c;如果没有合适的同步机制&#xff0c;可能会导致数据竞争、内存一致性问题&#xff0c;甚至造成程序崩溃。为了解决这个问题&#xff0c;C提供…

【退役之重学前端】JavaScript 类、构造器、原型的关系

ES6中类的概念&#xff0c;我之前花了较长的时间学习Java&#xff0c;所以对类感觉很亲切。我并不满足仅仅会使用&#xff0c;让我们一起深究一下 JavaScript 中的类吧。 构造一个类&#xff0c;并实例化一个对象 class Animal{constructor(name){this.name name;}getName(){…