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

2024-02-20 13:44

本文主要是介绍【全网首篇】Copyparty 路径遍历漏洞 CVE-2023-37474 漏洞分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

图片


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 及以上版本

文末

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

这篇关于【全网首篇】Copyparty 路径遍历漏洞 CVE-2023-37474 漏洞分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/728402

相关文章

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

修复已被利用的高危漏洞! macOS Sequoia 15.6.1发布

《修复已被利用的高危漏洞!macOSSequoia15.6.1发布》苹果公司于今日发布了macOSSequoia15.6.1更新,这是去年9月推出的macOSSequoia操作... MACOS Sequoia 15.6.1 正式发布!此次更新修复了一个已被黑客利用的严重安全漏洞,并解决了部分中文用户反馈的

SpringBoot路径映射配置的实现步骤

《SpringBoot路径映射配置的实现步骤》本文介绍了如何在SpringBoot项目中配置路径映射,使得除static目录外的资源可被访问,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一... 目录SpringBoot路径映射补:springboot 配置虚拟路径映射 @RequestMapp

Spring Boot 整合 SSE(Server-Sent Events)实战案例(全网最全)

《SpringBoot整合SSE(Server-SentEvents)实战案例(全网最全)》本文通过实战案例讲解SpringBoot整合SSE技术,涵盖实现原理、代码配置、异常处理及前端交互,... 目录Spring Boot 整合 SSE(Server-Sent Events)1、简述SSE与其他技术的对

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、

MySQL中读写分离方案对比分析与选型建议

《MySQL中读写分离方案对比分析与选型建议》MySQL读写分离是提升数据库可用性和性能的常见手段,本文将围绕现实生产环境中常见的几种读写分离模式进行系统对比,希望对大家有所帮助... 目录一、问题背景介绍二、多种解决方案对比2.1 原生mysql主从复制2.2 Proxy层中间件:ProxySQL2.3

python使用Akshare与Streamlit实现股票估值分析教程(图文代码)

《python使用Akshare与Streamlit实现股票估值分析教程(图文代码)》入职测试中的一道题,要求:从Akshare下载某一个股票近十年的财务报表包括,资产负债表,利润表,现金流量表,保存... 目录一、前言二、核心知识点梳理1、Akshare数据获取2、Pandas数据处理3、Matplotl

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比