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及以上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值