我是靠谱客的博主 老迟到巨人,最近开发中收集的这篇文章主要介绍CVE-2021-32682 elFinder ZIP 参数与任意命令注入漏洞复现一、漏洞信息二、环境搭建三、源码追踪四、复现过程五、修复建议,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

一、漏洞信息

二、环境搭建

三、源码追踪

四、复现过程

五、修复建议


一、漏洞信息

漏洞名称ELFINDER ZIP 参数与任意命令注入漏洞
漏洞编号CVE-2021-32682
危害等级高危
受影响版本elFinder <= 2.1.58
漏洞概述elFinder <= 2.1.58版本中,在创建新的zip存档文件时,对name参数过滤不足,导致参数被带入proc_open中执行,造成命令注入,攻击者可以利用该漏洞在elFinder服务器上执行任意代码。

源码包:

链接:https://pan.baidu.com/s/1CtqSmjIgmGZo-BJAePOW4Q 
提取码:bdi7 
--来自百度网盘超级会员V4的分享

二、环境搭建

使用vulhub提供的镜像容器进行靶场搭建:

docker-compose up -d #启动靶场环境

访问http://your-ip:8080可成功进入服务界面:

三、源码追踪

1.创建一个zip压缩包,抓包观察:

2.观察包可以看到操作是在connector.minimal.php文件中进行的,进入此代码中发现一个autoload.php文件:

3.进入autoload.php,逐个观察:

4.抓到的包中可看到cmd=archive,所以先去查找archive函数。protected function archive

5.在该函数中,参数进行isset判断最后传入archive类,查找public function archive:

在其中可以发现两个类,uniqueName和remoteArchive:

6.先查找public function uniqueName,发现其对传进的参数进行判断替换后又将其传回:

7.再进入protected function remoteArchive,发现其将参数传给了makeArchive:

8.查找protected function makeArchive,观察后发现参数通过escapeshellarg()进行转义,然后拼接其它参数赋值给$cmd,最后进入到procExec中

9.进入procExec,发现最终name参数传入proc_open中执行:

Proc_open:一个php函数,执行一个命令,并且打开用来输入/输出的文件指针,简单将就是可以操作执行服务器命令行。

四、复现过程

1.首先创建一个111.txt文件:

2.将111.txt文件打入222.zip压缩包文件中:

3.然后再将222.zip打入新的333.zip压缩包中,同时开启代理抓包:

在抓包的过程中也获取了111.txt与222.zip的base64编码:

4.最后修改创建333.zip的请求报文,获取id信息并将其输入到新的名为test.txt文件中:

5.可成功查看到结果:

6.修改报文创建新文件:

7.成功:

五、修复建议

目前厂商已发布升级补丁以修复漏洞,补丁获取链接:

https://github.com/Studio42/elFinder/commit/a106c350b7dfe666a81d6b576816db9fe0899b17

及时更新到新版本2.1.49及以上。

最后

以上就是老迟到巨人为你收集整理的CVE-2021-32682 elFinder ZIP 参数与任意命令注入漏洞复现一、漏洞信息二、环境搭建三、源码追踪四、复现过程五、修复建议的全部内容,希望文章能够帮你解决CVE-2021-32682 elFinder ZIP 参数与任意命令注入漏洞复现一、漏洞信息二、环境搭建三、源码追踪四、复现过程五、修复建议所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部