热搜词
发表于 2022-9-1 17:23:34 | 显示全部楼层 |阅读模式
Veno-File-Manager (VFM3-4)存在显示隐藏文件夹(hidden_dirs)漏洞解决办法

解决方法:

根目录/vfm-admin/class/class.location.php 文件,类中成员方法 editAllowed() 代码,其中的成员变量 $father 可能有误,没有把获取到的当前url地址($getDir)转码为中文字符,并且获取的路径始终是开始目录(starting_dir),并不是当前目录,也不是当前目录的子目录,相关代码如下:

  1.         /**
  2.          * Check if editing is allowed into the current directory,
  3.          * based on configuration settings
  4.          *
  5.          * @param string $relative relative path to index.php
  6.          *
  7.          * @return true/false
  8.          */
  9.         public function editAllowed($relative = false)
  10.         {
  11.             global $setUp;
  12.             $totdirs = count($this->path);

  13.             $father = $this->getDir(false, true, false, $totdirs -1);
  14.             $hidden_dirs = $setUp->getConfig('hidden_dirs');
  15.             if (!$hidden_dirs) {
  16.                 return false;
  17.             }
  18.             if (in_array(basename($father), $hidden_dirs)) {
  19.                 return false;
  20.             }
  21.             if ($this->checkUserDir($relative) === true) {
  22.                 return true;
  23.             }
  24.             return false;
  25.         }
复制代码
把其中的成员变量 $father 中的第4个参数 $totdirs -1改为 0,修改后代码如下:
  1. $father = $this->getDir(false, true, false, 0);
复制代码

修改后访问效果:
在当前目录下如果有隐藏文件夹,仍然能列表显示,但是打开隐藏文件夹时,不再显示此隐藏目录下的文件。

与解决此漏洞相关文件:
根目录/vfm-admin/class/class.location.php           //检查当前用户目录权限(修改此文件)

全部评论0
回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|管理员之家 ( 苏ICP备2023053177号-2 )

GMT+8, 2024-12-27 19:52 , Processed in 0.168693 second(s), 22 queries .

Powered by Discuz! X3.5

Cpoyright © 2001-2024 Discuz! Team