MIC

加载中 0%

MICMIC

PHP2Shell 漏洞怎么修?无认证 RCE 应急处理

·

PHP2Shell(CVE‑2026‑109618 / 109619)是无需登录即可远程执行代码的高危漏洞。本文给出判断是否受影响的方法、打补丁与配置加固的具体步骤、打不了补丁时的临时缓解手段,以及验证修复是否生效的检查清单,帮技术负责人在最短时间内把风险压下去。

PHP2Shell 漏洞怎么修?无认证 RCE 应急处理

PHP2Shell 这两个编号(CVE‑2026‑109618、CVE‑2026‑109619)要当紧急事件处理:攻击者不需要任何账号密码,只要能访问到暴露在公网的服务,就可能直接在你的服务器上执行命令。处置顺序建议是——先确认自己是否在受影响范围内,再决定是打补丁还是先上临时缓解,最后务必验证并复查日志。下面按可执行的顺序拆开讲。


第一步:30 分钟内判断你是否真的受影响


不要一上来就全站停机,先做三件事定位暴露面。


1. 确认版本。登录服务器执行 `php -v`,并检查容器镜像 tag、`composer.lock`、面板里切换的 PHP 版本。很多企业网站跑的是老旧 7.x,运维以为升过,实际是另一套环境在跑。

2. 确认暴露面。用外部视角扫一遍:哪些域名/IP 的 80、443、8080 直接对公网开放,是否有测试环境、旧版后台、临时上线的接口忘了关。内网可访问不等于安全,横向移动往往从这里开始。

3. 确认触发路径。对照官方公告里给出的受影响组件与入口,检查你的路由、上传接口、反序列化入口、模板渲染点是否被覆盖。判断不了就按“受影响”处理,成本更低。


把结果记成一张表:域名、PHP 版本、是否公网、是否含受影响组件、负责人。这张表后面验证和复盘都要用。


受影响范围排查表结构示意

第二步:能打补丁就打补丁,别用“改配置”代替升级


补丁是唯一根治手段,临时缓解只是争取时间。


- 先在预发验证。生产直接升级风险很高,尤其是跑了多年的企业网站,扩展和框架版本互相牵扯。预发跑一遍核心链路:登录、下单/提交表单、支付回调、文件上传。

- 按依赖顺序升。先升运行时,再升框架与第三方库,最后处理业务代码里被废弃的调用。升完执行 `composer update` 后要重新生成锁文件并提交。

- 保留回滚路径。升级前打快照或留旧镜像 tag,写清回滚命令。没有回滚方案的升级,本质是赌博。

- 避坑:不要只升一台机器就宣布完成。负载均衡后面往往还有几台没动,攻击者打的就是漏掉的那台。


如果业务是外包做的、源码拿不到,先联系原开发方要版本信息和补丁计划;拿不到就按下一节的临时方案先顶住。


第三步:打不了补丁时的临时缓解,按优先级做


缓解措施是“降低被利用概率”,不是“修好了”,必须写进日程表限期升级。


1. 收缩暴露面:把管理后台、调试接口、测试环境从公网摘掉,改成内网访问或加 IP 白名单。这一条收益最大、成本最低。

2. 前置拦截:在 WAF 或 Nginx 层针对公告给出的特征做规则拦截,同时限制上传目录的执行权限(`php_flag engine off` 或对应等效配置)。

3. 降权运行:Web 进程不要用 root,文件目录去掉写权限中不必要的部分,把 `disable_functions` 里能关的危险函数关掉。

4. 加监控:对异常子进程、对外连接、上传目录内新出现的可执行文件做告警。


避坑:只加 WAF 规则不改代码,等于把命交给规则库。攻击者换一个编码方式就可能绕过,所以缓解期内要每天看一次拦截日志。


临时缓解措施优先级示意

第四步:修复后必须验证,否则等于没修


很多团队补丁打完就收工,结果旧进程还在跑。


- 重启 PHP-FPM 与 Web 服务,确认 `php -v` 在所有节点上都已是新版本。

- 用外部扫描工具复测原触发路径,确认返回不再是可利用状态。

- 回查日志:漏洞公开到修复之间的时间窗内,是否有异常 POST、可疑上传、异常外连。有就要按入侵事件处理,而不只是打补丁。

- 检查定时任务、SSH 公钥、新增账号,确认没有被留后门。


举个具体场景(示例):某公司官网改版期间临时开了一个文件上传接口给设计用,忘记关,正好落在受影响版本上。这类“临时接口”是重灾区,改版收尾时应该有一张“临时入口清理清单”。


什么情况适合找 MIC Studio


如果你手上是下面几种情况,自己硬扛性价比不高:


- 源码在外包手里,版本信息问不清,补丁计划排不出来;

- 站点多、环境杂,分不清哪些在公网、哪些在受影响范围;

- 打完补丁想再做一轮安全测试和逆向测试,确认没有残留入口和后门;

- 顺便要重构老系统,把网站开发、小程序开发或 App开发 的技术栈统一到可维护的版本上。


MIC Studio 做企业网站、小程序、App 与脚本开发,也做网站安全测试和逆向测试,可以按“先止血、再验证、后重构”的顺序配合。不是所有问题都需要外包,能自己打补丁的,先把补丁打完更重要。


结尾:三条可以今天就做的事


1. 今天出清单:把所有公网可访问的 PHP 环境列出来,标版本和负责人,别靠记忆。

2. 48 小时内完成升级或缓解:能升就升,升不了就摘暴露面加拦截,并写明限期。

3. 留证据:升级前后各备份一次日志,修复后回查时间窗内的异常请求,确认没有被入侵过。


常见问题


只在内网使用,还需要修吗?


需要。内网不是隔离带,员工终端、测试机、第三方接入都可能成为跳板。优先修公网暴露的,内网的在同一个维护窗口内一起处理。


打了 WAF 规则能不能先不升级?


只能作为过渡。规则依赖特征匹配,绕过成本不高,且规则维护本身要人盯。把 WAF 当止血带,升级才是手术,两者不能互相替代。