灰儿 发表于 2022-9-1 17:23:34

Veno-File-Manager (VFM3-4)存在显示隐藏文件夹(hidden_dirs)漏洞

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         //检查当前用户目录权限(修改此文件)

页: [1]
查看完整版本: Veno-File-Manager (VFM3-4)存在显示隐藏文件夹(hidden_dirs)漏洞