为出海而探索,为选择多想一步。CROSSBORDER GEEK / K8N.COM
K8N跨境极客CrossBorder Geek

教程

php2shell 自查:服务器是否被入侵的判断清单

为什么升级完还要自查

安全排查清单示意 AI 操作示意图·以官网实际界面为准

php2shell(CVE-2026-109618 / CVE-2026-109619)是免认证远程代码执行漏洞,攻击者可能在你升级之前就已经执行了代码。所以:先升级(到 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35),再按下面四路排查。

第一路:登录与账号

last -20                     # 最近登录记录
lastb -20                    # 失败登录记录(部分发行版需要 root)
cat /etc/passwd | grep '/bin/bash'   # 列出可登录账号

重点看:不认识的 IP、深夜的 root 登录、异常的 sudo 记录(journalctl -u sudo)。发现陌生账号,先记录证据再处理。

第二路:进程与连接

四路排查流程示意 AI 操作示意图·以官网实际界面为准

ss -antp | head -30          # 当前监听与外连连接
ps aux --sort=-%cpu | head -20   # CPU 占用最高的进程

异常信号:陌生的外向连接(尤其连接你从未见过的 IP)、名为随机字符串的进程、PHP 进程行为异常。不要急着 kill,先 ss -tunp 看连接目标并记下来。

第三路:文件变更

find /tmp /var/tmp -type f -mtime -14 2>/dev/null | head -30
find /var/www -type f -mtime -14 2>/dev/null | head -50

重点查:web 目录里新增的 .php 文件、奇怪文件名(随机字符)、/tmp 下的可疑脚本;再看一遍 PHP 站点目录有没有被批量改写(入侵后常会留 webshell)。

第四路:流量与定时任务

机房运维排查实拍

crontab -l                    # 当前用户定时任务
ls /etc/cron.d/ /var/spool/cron/ 2>/dev/null
journalctl -k -n 50 | grep -iE 'drop|deny|suspect'   # 内核丢弃/告警

攻击者常用 cron 保持驻留。凡是你不认识的定时任务,都先看脚本内容再决定去留。

如果确认被入侵:先隔离,再恢复

  1. 断网/关停服务:先停止对外服务或摘掉公网 IP,别让攻击者继续操作;
  2. 备份证据:把 /var/log、进程快照、可疑文件完整复制到离线介质;
  3. 改口令:所有账号密码、SSH 密钥、面板口令全部轮换;
  4. 恢复:从干净备份恢复站点与数据(备份篇强调过:备份必须可用),系统重装是更彻底的选项;
  5. 复盘:补上 PHP 升级、防火墙、fail2ban、最小权限,别让同一漏洞再进一次。

日常防再次入侵的清单

  • 立即升级 PHP 到安全版本并保持安全更新习惯;
  • SSH 用密钥登录、禁 root 密码登录、fail2ban 限速;
  • web 目录写权限最小化,上传目录禁止执行 PHP;
  • 定时任务与 crontab 定期人工核对;
  • 异地备份 + 季度恢复演练。

官方资料

资料核对日期:2026-10-25

  • PHP 官网安全公告(CVE-2026-109618 / CVE-2026-109619 说明与修复版本):https://www.php.net/

最近一周热门文章

按近 7 天访问热度排序,热度积累前优先展示新文章。

当前栏目最新文章

教程 · 继续阅读同栏目的新内容

一起交流

0 条留言

还没有留言,来分享你的想法吧。

LEAVE A NOTE

你的经验,也很重要。

无需注册或登录。请勿公开邮箱密码、证件、银行卡号或其他敏感信息。

更多阅读
K8N · CrossBorder Geek

给出海玩家、独立开发者、跨境博主与外贸人的选型笔记。

关于这个博客 ↗