任意文件读取漏洞(CVE-2024-7928)修复

server/2024/11/30 13:27:57/

验证CVE-2024-7928问题是否存在可以使用如下方法:

https://域名/index/ajax/lang?lang=..//..//目录名/文件名(不带后缀) 

目录名是该项目的一个目录,这里目录位置为nginx设置站点目录为基准,网上两层目录。

文件名是目录下的项目文件,通常是包含项目参数初始化的文件。

假定目录名为application,文件名为database.php,那么验证链接为:

https://域名/index/ajax/lang?lang=..//..//application/database

在浏览器中验证效果如下:

该漏洞源于FastAdmin 1.3.3.20220121版本,该漏洞影响了文件/index/ajax/lang的一些未知功能。通过操作参数lang可以导致路径遍历。针对此漏洞,可参考FastAdmin修复建议,对代码进行修改。(官网地址:https://www.fastadmin.net/news/94.html)

官方提供了两种修复方法,一种是关闭多语言功能,一种是手动修改代码进行修复。

第一种修复方法;

修改application/config.php大概第45行的lang_switch_on的对应值修改为false即可。

打开application/common/behavior/Common.php,添加以下代码
 public function appInit()
    {
        $allowLangList = Config::get('allow_lang_list') ?? ['zh-cn', 'en'];
        \think\Lang::setAllowLangList($allowLangList);
    }
    
    
然后打开application/tags.php,在app_init对应的数组中添加以下代码

'app\\common\\behavior\\Common',

fastadmin另有安全提示如下:

建议启用application/config.php中的cookie配置中的httponly设置为true,如果是https,建议secure也配置为true。


FastAdmin目录安全配置,如下:

生产环境首先全部设置为555权限,
runtime目录设置为755权限
public/uploads目录设置为755权限并禁用PHP脚本执行

禁用后台admin模块,启用独立的后台登录入口,最新版已经默认禁用 admin 模块。
新增网站配置时务必绑定public目录,同时启用open_basedir限制只允许FastAdmin的根目录,例如:fastcgi_param PHP_VALUE "open_basedir=/var/www/fastadmin/:/tmp/:/proc/";
修改php.ini,禁用不安全的函数,配置如disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru


http://www.ppmy.cn/server/146161.html

相关文章

蒙特卡洛方法(Monte Carlo,MC)

目录 1 序言 2 Monte Carlo法计算积分 3 最优化计算Monte Carlo法 1 序言 蒙特卡罗方法(Monte Carlo)是由冯诺依曼和乌拉姆等人发明的,“蒙特卡罗”这个名字是出自摩纳哥的蒙特卡罗赌场,这个方法是一类基于概率的方法的统称。是一种应用随机数来进行…

小程序 - 婚礼邀请函

小程序页面和样式练习 - 婚礼邀请函小程序开发笔记 目录 婚礼邀请函 准备工作 加载静态资源 项目初始化 标签栏的配置 各页面导航栏标题配置 全局导航栏样式配置 公共样式的编写 项目内容 邀请函页面内容 邀请函页面样式 照片页面内容 照片墙页面样式 美好时光页…

【Java基础入门篇】前言

Java基础入门篇 本系列内容主要针对Java基础知识,总共包含四大部分内容: 变量、数据类型和运算符控制语句和递归算法面向对象和JVM底层分析数组和排序 学习需要具备: IDEA编译器 JDK1.8版本 写在前面 在Java入门的最开始,我们需…

C++设计模式(工厂模式)

一、介绍 1.动机 在软件系统中,经常面临着创建对象的工作,这些对象有可能是一系列相互依赖的对象;由于需求的变化,需要创建的对象的具体类型经常变化,同时也可能会有更多系列的对象需要被创建。 如何应对这种变化&a…

【k8s深入理解之 Scheme 补充-7】理解无版本资源、有版本资源、元数据信息等联系和区别

代码 注意 无版本资源 —— 也是一种资源,可以理解为公共资源,用于记录或查询(如 Status 或 APIGroup 等) 由于 k8s 发展原因,一般放置在 核心组v1 版本种(Group为空,版本为 v1)&am…

maven 工具 clean、compile、package、install、deploy 常用命令使用区别

在 Maven 中,clean, compile, 和 deploy 是常用的生命周期阶段命令,它们各自有不同的用途和含义。下面是这些命令的详细解释: 1. mvn clean 含义: clean 阶段用于清理项目构建过程中生成的文件。 作用: 删除 target …

Could not locate device support files.

报错信息:Failure Reason: The device may be running a version of iOS (13.6.1 17G80) that is not supported by this version of Xcode.[missing string: 869a8e318f07f3e2f42e11d435502286094f76de] 问题:xcode15升级到xcode16之后,13.…

安装SQL Server 2022提示需要Microsoft .NET Framework 4.7.2 或更高版本

安装SQL Server 2022提示需要Microsoft .NET Framework 4.7.2 或更高版本。 原因是:当前操作系统版本为Windows Server 2016 Standard版本,其自带的Microsoft .NET Framework 版本为4.6太低,不满足要求。 根据报错的提示,点击链接…