如何应对禁用exec函数后的PHP命令执行漏洞及加固措施?
- 内容介绍
- 文章标签
- 相关推荐
本文共计967个文字,预计阅读时间需要4分钟。
当Web服务器运行PHP环境时,直接修改主配置文件php.ini可一次性阻止exec及其同类函数被调用,适用于所有PHP进程,无需修改业务代码即可切断多数RCE输入。
1、使用文本编辑器打开php.ini文件,典型路径包括/etc/php/8.2/apache2/php.ini或/usr/local/php/etc/php.ini。
2、搜索disable_functions配置项,若该行以分号开头则删除分号取消注释。
3、在disable_functions = 后追加exec,passthru,shell_exec,system,proc_open,popen,pcntl_exec,多个函数间严格使用英文逗号分隔,注意不可添加空格。
立即学习“PHP免费学习笔记(深入)”;
4、保存文件后执行systemctl restart apache2或systemctl restart php8.2-fpm,使配置立即生效。
二、利用open_basedir限制文件操作边界
即使exec等函数已被禁用,攻击者仍可能借助文件包含、临时目录写入或符号链接等方式实现跨目录访问,open_basedir能强制将所有文件类操作约束在指定路径内,形成第二道隔离屏障。
1、在php.ini中定位open_basedir指令,若不存在则新增一行。
2、设置其值为网站根目录与必需临时路径的组合,例如:/var/www/html:/tmp:/var/tmp。
3、确保各路径之间使用冒号分隔,且末尾不带斜杠,避免因路径匹配失败导致功能异常。
本文共计967个文字,预计阅读时间需要4分钟。
当Web服务器运行PHP环境时,直接修改主配置文件php.ini可一次性阻止exec及其同类函数被调用,适用于所有PHP进程,无需修改业务代码即可切断多数RCE输入。
1、使用文本编辑器打开php.ini文件,典型路径包括/etc/php/8.2/apache2/php.ini或/usr/local/php/etc/php.ini。
2、搜索disable_functions配置项,若该行以分号开头则删除分号取消注释。
3、在disable_functions = 后追加exec,passthru,shell_exec,system,proc_open,popen,pcntl_exec,多个函数间严格使用英文逗号分隔,注意不可添加空格。
立即学习“PHP免费学习笔记(深入)”;
4、保存文件后执行systemctl restart apache2或systemctl restart php8.2-fpm,使配置立即生效。
二、利用open_basedir限制文件操作边界
即使exec等函数已被禁用,攻击者仍可能借助文件包含、临时目录写入或符号链接等方式实现跨目录访问,open_basedir能强制将所有文件类操作约束在指定路径内,形成第二道隔离屏障。
1、在php.ini中定位open_basedir指令,若不存在则新增一行。
2、设置其值为网站根目录与必需临时路径的组合,例如:/var/www/html:/tmp:/var/tmp。
3、确保各路径之间使用冒号分隔,且末尾不带斜杠,避免因路径匹配失败导致功能异常。

