Veno-File-Manager (VFM3)云盘游客可查看所有文件漏洞解决方法
存在漏洞:
极简云盘 Veno-File-Manager (VFM) 3.75-V4.07 版本,如果游客开启了“查看文件”权限,即使关闭了“查看文件夹”功能,游客不仅能看到根目录下的所有文件,通过在URL地址栏中手工添加“?dir=uploads/子文件夹名称”参数也可以看到子文件夹里内容,包括用户私有文件夹的内容,造成游客的权限过大,起不到保护用户私有文件的目的。
解决思路:
修改未登录用户,可防问的目录名称。
解决方法:
打开 主目录/vfm-admin/class/class.gatekeeper.php文件,查找 getUserInfo($info) 函数,大概在239行左右,代码如下:- /**
- * Get user info ('name', 'role', 'dir', 'email')
- *
- * @param int $info index of corresponding user info
- *
- * @return info requested
- */
- public static function getUserInfo($info)
- {
- if (GateKeeper::isUserLoggedIn()
- && isset($_SESSION['vfm_user_name'])
- && strlen($_SESSION['vfm_user_name']) > 0
- ) {
- $username = $_SESSION['vfm_user_name'];
- $curruser = Utils::getCurrentUser($username);
- if (isset($curruser[$info]) && strlen($curruser[$info]) > 0) {
- return $curruser[$info];
- }
- }
- return null;
- }
复制代码
添加未登录用户可访问的目录,修改后代码如下:
- /**
- * Get user info ('name', 'role', 'dir', 'email') 获取用户信息(“名称”、“角色”、“目录”、“电子邮件”)
- *
- * @param int $info index of corresponding user info
- *
- * @return info requested
- */
- public static function getUserInfo($info)
- {
- if (GateKeeper::isUserLoggedIn()
- && isset($_SESSION['vfm_user_name'])
- && strlen($_SESSION['vfm_user_name']) > 0
- ) {
- $username = $_SESSION['vfm_user_name'];
- $curruser = Utils::getCurrentUser($username);
- if (isset($curruser[$info]) && strlen($curruser[$info]) > 0) {
- return $curruser[$info];
- }
- } else if(!GateKeeper::isUserLoggedIn() && SetUp::getConfig('viewdirs_enable_guest') ){
- if( !SetUp::getConfig('view_enable_guest')){
- return null;}
- $guestpatharray = array ('dir' => '["guest","公共目录"]',); //游客目录
- $userpatharray = json_decode($guestpatharray['dir'], true);
- return $guestpatharray['dir'];
- }
- return null;
- }
复制代码
|
|