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 及以上版本
文末
关注公众号"知攻善防实验室",后台回复"交流群"获取技术交流群链接