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

admin 2024年2月18日15:36:57评论19 views字数 874阅读2分54秒阅读模式

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

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

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

漏洞复现分析环境

Copyparty测试版本:1.8.0和1.8.2

系统:Windows10 和 Linux

运行环境:Python3.11

漏洞分析

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

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

可以看见就300行左右

看一下文件还是挺大的

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

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

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

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

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

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

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

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

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

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

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

传给这个变量

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

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

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

看一下修复的代码

修复后的代码先创建了一个 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 路径遍历漏洞 CVE-2023-37474 漏洞分析

漏洞修复

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

文末

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

原文始发于微信公众号(知攻善防实验室):【全网首篇】Copyparty 路径遍历漏洞 CVE-2023-37474 漏洞分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月18日15:36:57
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【全网首篇】Copyparty 路径遍历漏洞 CVE-2023-37474 漏洞分析http://cn-sec.com/archives/2501483.html

发表评论

匿名网友 填写信息