目录
一、漏洞信息
二、环境搭建
三、源码追踪
四、复现过程
五、修复建议
一、漏洞信息
| 漏洞名称 | 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内容请搜索靠谱客的其他文章。
发表评论 取消回复