【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);
}
// ...
}
关键问题:
- 正则表达式设计错误,无法正确匹配和替换
/../序列 - 导致路径遍历检查被绕过
3.3 调用链分析
漏洞函数被多个关键操作调用:
elFinderVolumeLocalFileSystem::_inpathelFinderVolumeLocalFileSystem::_statelFinderVolumeDriver::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. 学习资源
8. 总结
ElFinder的路径遍历漏洞展示了Web文件管理器常见的安全问题。通过深入分析函数调用链和路径处理逻辑,安全研究人员可以发现潜在的绕过方法。此案例强调了:
- 正则表达式实现的安全性重要性
- 防御函数的完整调用链分析必要性
- 旧版本软件持续安全评估的价值