【exploit系列SYNACKTIV】Elfinder:Web端文件管理器的漏洞发现之旅
字数 1340 2025-08-24 16:48:06

ElFinder Web文件管理器漏洞分析与利用教学文档

1. 漏洞概述

ElFinder是一个流行的Web端文件管理器,本文档将详细分析其历史漏洞(特别是CVE-2022-26960路径遍历漏洞)的发现过程、技术原理和利用方法。

2. 漏洞背景

2.1 ElFinder简介

ElFinder是一个基于Web的文件管理器,提供上传、下载、编辑、删除和查看服务器文件的功能。由于其直接操作文件系统的特性,它经常成为安全研究的重点目标。

2.2 历史漏洞

  • CVE-2016-4971:远程代码执行漏洞
  • CVE-2018-9109:任意文件读取/删除
  • CVE-2019-9194:命令注入漏洞
  • CVE-2021-32682/CVE-2021-23394:文件删除/移动、PHP文件上传RCE、zip参数注入RCE等

3. CVE-2022-26960路径遍历漏洞分析

3.1 漏洞发现过程

在渗透测试中发现旧版本(2.1.12)的ElFinder,虽然已知的CVE-2019-9194命令注入漏洞因功能禁用而无法利用,但发现了路径遍历的可能性。

3.2 技术原理

漏洞位于elFinderVolumeDriver.class.php中的getFullPath函数:

protected function getFullPath($path, $base) {
    // ...
    // normalize `/../`
    $normreg = '#('.$sepquoted.')[^'.$sepquoted.']+'.$sepquoted.'..'.$sepquoted.')#';
    while(preg_match($normreg, $path)) {
        $path = preg_replace($normreg, '$1', $path, 1);
    }
    // ...
}

关键问题:

  1. 正则表达式设计错误,无法正确匹配和替换/../序列
  2. 导致路径遍历检查被绕过

3.3 调用链分析

漏洞函数被多个关键操作调用:

  • elFinderVolumeLocalFileSystem::_inpath
  • elFinderVolumeLocalFileSystem::_stat
  • elFinderVolumeDriver::stat
  • 多个API行为控制器

4. 漏洞利用方法

4.1 利用条件

  • 版本影响:2.1.61之前的所有版本
  • 需要知道ElFinder根目录的文件系统路径(可猜测或通过其他漏洞获取)

4.2 利用步骤

  1. 构造特殊路径,以配置的根路径作为前缀
  2. 利用双斜线技巧注入未过滤的../序列
  3. 绕过_inpath函数的检查
  4. 实现路径遍历

4.3 可利用的操作

  • search:任意文件读取
  • upload:文件写入
  • parents/subdirs:浏览文件系统

5. 防御措施

5.1 官方修复

  • 升级到2.1.61或更高版本
  • 修复了_joinPath函数的安全问题

5.2 加固建议

  1. Web根目录设置只读权限
  2. 上传目录禁用PHP文件解析
  3. 最小化部署,不使用zip CLI功能
  4. 定期更新软件版本

6. 漏洞时间线

  • 2022-03-08:漏洞提交
  • 2022-03-09:修补程序完成
  • 2022-03-14:CVE-2022-26960发布
  • 2022-03-14:elFinder 2.1.61修复版本发布

7. 学习资源

  1. Synacktiv漏洞报告
  2. SonarSource漏洞分析
  3. CVE-2019-9194报告

8. 总结

ElFinder的路径遍历漏洞展示了Web文件管理器常见的安全问题。通过深入分析函数调用链和路径处理逻辑,安全研究人员可以发现潜在的绕过方法。此案例强调了:

  1. 正则表达式实现的安全性重要性
  2. 防御函数的完整调用链分析必要性
  3. 旧版本软件持续安全评估的价值
ElFinder Web文件管理器漏洞分析与利用教学文档 1. 漏洞概述 ElFinder是一个流行的Web端文件管理器,本文档将详细分析其历史漏洞(特别是CVE-2022-26960路径遍历漏洞)的发现过程、技术原理和利用方法。 2. 漏洞背景 2.1 ElFinder简介 ElFinder是一个基于Web的文件管理器,提供上传、下载、编辑、删除和查看服务器文件的功能。由于其直接操作文件系统的特性,它经常成为安全研究的重点目标。 2.2 历史漏洞 CVE-2016-4971:远程代码执行漏洞 CVE-2018-9109:任意文件读取/删除 CVE-2019-9194:命令注入漏洞 CVE-2021-32682/CVE-2021-23394:文件删除/移动、PHP文件上传RCE、zip参数注入RCE等 3. CVE-2022-26960路径遍历漏洞分析 3.1 漏洞发现过程 在渗透测试中发现旧版本(2.1.12)的ElFinder,虽然已知的CVE-2019-9194命令注入漏洞因功能禁用而无法利用,但发现了路径遍历的可能性。 3.2 技术原理 漏洞位于 elFinderVolumeDriver.class.php 中的 getFullPath 函数: 关键问题: 正则表达式设计错误,无法正确匹配和替换 /../ 序列 导致路径遍历检查被绕过 3.3 调用链分析 漏洞函数被多个关键操作调用: elFinderVolumeLocalFileSystem::_inpath elFinderVolumeLocalFileSystem::_stat elFinderVolumeDriver::stat 多个API行为控制器 4. 漏洞利用方法 4.1 利用条件 版本影响:2.1.61之前的所有版本 需要知道ElFinder根目录的文件系统路径(可猜测或通过其他漏洞获取) 4.2 利用步骤 构造特殊路径,以配置的根路径作为前缀 利用双斜线技巧注入未过滤的 ../ 序列 绕过 _inpath 函数的检查 实现路径遍历 4.3 可利用的操作 search :任意文件读取 upload :文件写入 parents / subdirs :浏览文件系统 5. 防御措施 5.1 官方修复 升级到2.1.61或更高版本 修复了 _joinPath 函数的安全问题 5.2 加固建议 Web根目录设置只读权限 上传目录禁用PHP文件解析 最小化部署,不使用zip CLI功能 定期更新软件版本 6. 漏洞时间线 2022-03-08:漏洞提交 2022-03-09:修补程序完成 2022-03-14:CVE-2022-26960发布 2022-03-14:elFinder 2.1.61修复版本发布 7. 学习资源 Synacktiv漏洞报告 SonarSource漏洞分析 CVE-2019-9194报告 8. 总结 ElFinder的路径遍历漏洞展示了Web文件管理器常见的安全问题。通过深入分析函数调用链和路径处理逻辑,安全研究人员可以发现潜在的绕过方法。此案例强调了: 正则表达式实现的安全性重要性 防御函数的完整调用链分析必要性 旧版本软件持续安全评估的价值