宝塔面板旧版PHP(7.4/8.0/8.1)源码编译打php2Shell漏洞补丁教程

宝塔面板旧版PHP(7.4/8.0/8.1)源码编译打php2Shell漏洞补丁教程

本次修复针对php2Shell远程代码执行漏洞,对应CVE-2026-109618、CVE-2026-109619。根据PHP官方生命周期公告,PHP7.4、8.0、8.1均已结束维护周期,官方不再推送完整版本安装包,宝塔等面板的一键更新渠道也不会提供升级支持。针对本次高危漏洞,官方仅开放源码级向后移植补丁,需要手动编译修复。很多老网站、传统商城程序兼容性有限,无法直接升级PHP高版本,本文提供宝塔Linux VPS原地编译补丁方案,修复后可完整保留原有PHP扩展与站点配置。

前置风险说明

  • 优先建议:业务条件允许的站点,建议迁移至PHP8.2及以上仍在官方维护的版本,可长期获得安全更新
  • 本次使用的修复文件为PHP官方源码移植补丁,无官方预编译安装包,仅支持手动源码编译修复
  • 操作前务必在宝塔后台创建服务器快照,防止编译过程异常导致业务中断
  • 仅适用于独立宝塔Linux VPS服务器,共享虚拟主机无编译权限,无法使用该方案
  • 编译过程请勿关闭SSH窗口,低配服务器编译耗时较长,耐心等待执行完成

一、环境检测,记录当前PHP信息

SSH登录服务器执行下方命令,核对当前PHP版本与已加载扩展。路径中 74/80/81 对应你的PHP版本,按需替换:

/www/server/php/74/bin/php -v
/www/server/php/74/bin/php -m

二、安装编译依赖

CentOS / Rocky 系列系统

yum install -y gcc gcc-c++ make cmake bison re2c libxml2-devel openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel libzip-devel sqlite-devel oniguruma-devel

Debian / Ubuntu 系列系统

apt update && apt install -y gcc g++ make cmake bison re2c libxml2-dev libssl-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libfreetype6-dev libzip-dev libsqlite3-dev libonig-dev

三、下载对应版本源码、上传补丁并执行打补丁

创建临时编译目录,以下以PHP7.4.33版本演示,使用8.0、8.1的用户替换对应源码包链接即可:

mkdir -p /usr/local/src/php-patch && cd /usr/local/src/php-patch
wget https://www.php.net/distributions/php-7.4.33.tar.gz
tar -zxvf php-7.4.33.tar.gz
cd php-7.4.33

重要说明:本次旧版本修复补丁为官方专项移植源码,无公开一键下载链接。需手动将对应版本patch补丁文件通过SFTP上传至当前源码目录,再执行打补丁命令:

patch -p1 < php2shell-backport-74.patch

终端提示 Hunk succeeded 即为补丁植入成功;出现拒绝报错,一般是补丁与源码版本不匹配,核对版本后重新操作即可。

四、读取宝塔原生编译参数,原地覆盖编译

为保证修复后PHP扩展、配置和原来完全一致,先读取宝塔原生的configure编译参数:

/www/server/php/74/bin/php -i | grep configure

复制终端输出的完整configure参数,粘贴至下方命令内执行编译安装。make install会直接覆盖原有程序文件,不会改动php.ini站点配置:

./configure 此处粘贴你服务器输出的configure完整参数
make -j$(nproc)
make install

五、编译完成验证与服务重启

  1. 进入宝塔软件商店,找到对应PHP版本,重启PHP服务
  2. 执行验证命令,确认版本、扩展正常加载无缺失
/www/server/php/74/bin/php -v
/www/server/php/74/bin/php -m

站点根目录新建检测文件,访问测试网站功能完整性,测试结束务必删除该文件,避免泄露环境信息:

<?php
// 环境检测文件,使用后请及时删除
phpinfo();
?>

六、编译失败回滚方案

若编译报错、网站访问异常,优先恢复提前备份的服务器快照。无快照的情况下,可在宝塔软件商店重新安装对应版本PHP,即可重置恢复官方原版程序文件。

七、补丁编译期间临时防护方案

源码编译耗时较久,等待期间可在EdgeOne、宝塔WAF内添加防护策略,拦截本次漏洞特征的探测与攻击请求,临时降低服务器风险。

全站功能验证正常后,可删除 /usr/local/src/php-patch 临时目录释放磁盘空间。本文所有修复逻辑,均以PHP官方最新安全公告内容为准。

文章广告横幅
网络违法犯罪举报平台 广告
© 版权声明
THE END
喜欢就支持一下吧
点赞291 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容