Veno-File-Manager (VFM3-4)存在显示隐藏文件夹(hidden_dirs)漏洞解决办法
解决方法:
根目录/vfm-admin/class/class.location.php 文件,类中成员方法 editAllowed() 代码,其中的成员变量 $father 可能有误,没有把获取到的当前url地址($getDir)转码为中文字符,并且获取的路径始终是开始目录(starting_dir),并不是当前目录,也不是当前目录的子目录,相关代码如下:
- /**
- * Check if editing is allowed into the current directory,
- * based on configuration settings
- *
- * @param string $relative relative path to index.php
- *
- * @return true/false
- */
- public function editAllowed($relative = false)
- {
- global $setUp;
- $totdirs = count($this->path);
- $father = $this->getDir(false, true, false, $totdirs -1);
- $hidden_dirs = $setUp->getConfig('hidden_dirs');
- if (!$hidden_dirs) {
- return false;
- }
- if (in_array(basename($father), $hidden_dirs)) {
- return false;
- }
- if ($this->checkUserDir($relative) === true) {
- return true;
- }
- return false;
- }
复制代码 把其中的成员变量 $father 中的第4个参数 $totdirs -1改为 0,修改后代码如下:
- $father = $this->getDir(false, true, false, 0);
复制代码
修改后访问效果:
在当前目录下如果有隐藏文件夹,仍然能列表显示,但是打开隐藏文件夹时,不再显示此隐藏目录下的文件。
与解决此漏洞相关文件:
根目录/vfm-admin/class/class.location.php //检查当前用户目录权限(修改此文件)
|
|