应用程序与文件系统的交互始终是高度安全敏感的,因为较小的功能漏洞很容易成为可利用漏洞的来源。这种观察在web文件管理器的情况下尤其正确,其作用是复制完整文件系统的功能并以透明的方式将其公开给客户端的浏览器。
elFinder 是一种流行的 Web 文件管理器,常用于 CMS 和框架,例如 WordPress 插件 (wp-file-manager) 或 Symfony 包,以允许对本地和远程文件进行简单操作。在过去,elFinder一直是针对不安全配置或实际代码漏洞的活跃攻击的一部分。因此,elFinder的发布带有一个安全的默认配置,以防止攻击者进行任何恶意使用。
作为对广泛部署的开源项目的定期评估的一部分,研究人员在elFinder中发现了多个新的代码漏洞。在以下关于web文件管理器常见代码漏洞的案例研究中,研究人员发现了五个不同的漏洞链,并演示了如何利用它们来获得对底层服务器及其数据的控制。研究人员还将讨论一些稍后由供应商实现的补丁,以展示如何在用户的代码中防止它们。
恶意影响
我们在开发分支上工作,提交 f9c906d。调查结果也在 2.1.57 版中得到证实;都影响默认配置(除非本文另有说明)并且不需要事先认证。正如研究人员所提到的,利用这些漏洞会让攻击者在安装elFinder的服务器上执行任意PHP代码,最终导致其受到攻击。
【网络安全学习攻略】
研究人员在这篇文章中讨论的发现均分配了 CVE-2021-32682,并成功地利用了这些发现来获得代码执行:
删除任意文件;
移动任意文件;
PHP文件上传;
参数注入;
竞争条件(Race Condition);
所有这些漏洞类在向用户公开文件系统的软件中都非常常见,并且可能影响到大量产品,而不仅仅是elFinder。
elFinder发布了2.1.59版本,以解决研究人员负责披露的所有bug。毫无疑问,这些漏洞也会被广泛利用,因为针对旧版本的漏洞已经被公开发布,而连接器文件名是试图破坏网站时要查找的路径汇编的一部分。因此,研究人员强烈建议所有用户立即将elFinder升级到最新版本。
技术细节
elFinder带有一个用PHP编写的后端(也称为连接器)和一个用HTML和JavaScript编写的前端。连接器是将前端代码的操作分派给右后端代码以实现文件系统特性的主要脚本。连接器可以配置为禁止危险操作,将上传限制为特定的 MIME 类型:默认安装中有两种不同的类型。研究人员在所谓的“最小”连接器中发现了漏洞。它只允许镜像和纯文本上传,FTP是唯一支持的远程虚拟文件系统:这可能是最安全的,也是最有可能部署的。
为了更好地理解研究人员将用来演示发现的代码片段,研究人员将首先描述elFinder的路由是如何工作的。与许多现代PHP应用程序一样,连接器(例如connector.minimal. PHP)是唯一的入口点。它声明配置指令和闭包,然后实例化elFinder(核心)和elFinderConnector (elFinder和传输通道之间的接口,这里是HTTP)。
【网络安全学习攻略】
属性elFinder::$commands包含了每个有效的操作和预期的参数:
php/elFinder.class.php