找回密码
 注册
首页 ≡≡网络技术≡≡ PHP语言 Veno-File-Manager (VFM3)云盘游客可查看所有文件漏洞解 ...

CMS Veno-File-Manager (VFM3)云盘游客可查看所有文件漏洞解决方法

灰儿 2021-12-4 11:18:36
Veno-File-Manager (VFM3)云盘游客可查看所有文件漏洞解决方法

存在漏洞:
极简云盘 Veno-File-Manager (VFM) 3.75-V4.07 版本,如果游客开启了“查看文件”权限,即使关闭了“查看文件夹”功能,游客不仅能看到根目录下的所有文件,通过在URL地址栏中手工添加“?dir=uploads/子文件夹名称”参数也可以看到子文件夹里内容,包括用户私有文件夹的内容,造成游客的权限过大,起不到保护用户私有文件的目的。

VFM3游客可查看子文件夹内容漏洞.png

解决思路:
修改未登录用户,可防问的目录名称。

解决方法:
打开 主目录/vfm-admin/class/class.gatekeeper.php文件,查找 getUserInfo($info) 函数,大概在239行左右,代码如下:
  1. /**
  2. * Get user info ('name', 'role', 'dir', 'email')
  3. *
  4. * @param int $info index of corresponding user info
  5. *
  6. * @return info requested
  7. */
  8. public static function getUserInfo($info)
  9. {
  10.     if (GateKeeper::isUserLoggedIn()
  11. && isset($_SESSION['vfm_user_name'])
  12. && strlen($_SESSION['vfm_user_name']) > 0
  13.     ) {
  14. $username = $_SESSION['vfm_user_name'];
  15. $curruser = Utils::getCurrentUser($username);

  16. if (isset($curruser[$info]) && strlen($curruser[$info]) > 0) {
  17.     return $curruser[$info];
  18. }
  19.     }
  20.     return null;
  21. }
复制代码

添加未登录用户可访问的目录,修改后代码如下:
  1. /**
  2. * Get user info ('name', 'role', 'dir', 'email')   获取用户信息(“名称”、“角色”、“目录”、“电子邮件”)
  3. *
  4. * @param int $info index of corresponding user info
  5. *
  6. * @return info requested
  7. */
  8. public static function getUserInfo($info)
  9. {
  10.     if (GateKeeper::isUserLoggedIn()
  11. && isset($_SESSION['vfm_user_name'])
  12. && strlen($_SESSION['vfm_user_name']) > 0
  13.     ) {
  14. $username = $_SESSION['vfm_user_name'];
  15. $curruser = Utils::getCurrentUser($username);

  16. if (isset($curruser[$info]) && strlen($curruser[$info]) > 0) {
  17.     return $curruser[$info];
  18. }
  19.     } else if(!GateKeeper::isUserLoggedIn() && SetUp::getConfig('viewdirs_enable_guest') ){        
  20.                                 if( !SetUp::getConfig('view_enable_guest')){
  21.                                          return null;}
  22.        $guestpatharray = array ('dir' => '["guest","公共目录"]',);    //游客目录
  23.                            $userpatharray = json_decode($guestpatharray['dir'], true);           
  24.                            return $guestpatharray['dir'];
  25.     }
  26.     return null;
  27. }
复制代码




灰儿 楼主 2022-8-31 18:02:14
http://www.admin365.cn/thread-46393-1-1.html  Veno-File-Manager (VFM4)云盘让游客只可查看公共文件夹的方法
您需要登录后才可以回帖 登录 | 注册
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言 了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言 了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。