概述
目录
一、漏洞信息
二、环境搭建
三、源码追踪
四、复现过程
五、修复建议
一、漏洞信息
漏洞名称 | 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 参数与任意命令注入漏洞复现一、漏洞信息二、环境搭建三、源码追踪四、复现过程五、修复建议所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复