服务器PHP后门清除后又被二次感染怎么办?排查与修复思路
清完第二天又中招,问题多半不在你删的那几个文件
PHP站被挂后门,很多人第一步是找到那几个eval开头的php删掉,改密码,重启服务,觉得完事。结果第二天日志又冒出POST到陌生php的200记录。这不是没清干净,而是攻击者在你清之前就埋了触发条件——计划任务、开机脚本、另一个隐藏后门、被改过的正常文件,删掉的那几个只是表象。
下面按"攻击链残留在哪里"来讲,不谈概念,只讲怎么找、怎么确认。
先看入口是怎么进来的,定位才能收口
如果日志里能看到这类请求,基本可以确定入口:
- URI含
?s=index/ hinkpp/invokefunction,对应 CVE-2018-20062,ThinkPHP 5.0.23及以下、5.1.31及以下,invokefunction未过滤,POST body直接调system,无需登录。 - URI为
/_ignition/execute-solution,对应 CVE-2021-3129,Laravel Ignition 8.4.2及以下在debug开启时phar反序列化。debug模式生产环境没关,等于门开着。 - URI为
/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php,对应 CVE-2017-9841,PHPUnit 4.8.28前/5.6.3前,这个文件本不该出现在生产环境,一旦暴露可直接POST php://input执行代码。
看到以上任一条返回200,别只删后门,先把对应组件升级或删除,否则清多少次都会被重新写入。
残留点之一:时间线对不上的php文件
后门的mtime通常和access.log里第一次POST的时间只差几秒,这是最可靠的线索。按时间筛:
find /www/wwwroot -name "*.php" -type f -mtime -3 -exec ls -la {} ;
把所有近3天改动过的php列出来,重点看uploads、cache、runtime、data这类本该只放数据的目录里出现的php。更直接的一条:
find /www/wwwroot -name "*.php" -newermt "2024-01-01" -type f
正常业务的php不会频繁改mtime,凡是这个列表里出现在非代码目录的,逐个打开确认。
残留点之二:混淆后门的通用特征
攻击者会把后门塞进正常文件末尾,或用一个看起来像缓存的文件名。用关键字扫比肉眼翻快得多:
grep -rEn "eval(|assert(|base64_decode(|gzinflate(|create_function(" /www/wwwroot --include=*.php
重点不是所有命中都要删——有些框架本身会用到eval,要看上下文。真正可疑的是:一行超长、变量名随机、配合gzinflate或base64_decode嵌套、文件顶部注释写着"cache"或"license"。再叠加一句话参数名搜索:
grep -rEn "$_(POST|GET|REQUEST)[['"](z0|cmd|pass|c|shell)['"]]" /www/wwwroot --include=*.php
参数名是攻击者习惯,z0、cmd、pass、c这几个命中率最高。命中的文件直接隔离,不要在原目录删,先移出站点根目录再分析。
残留点之三:删不掉的不死马
你删了文件,刷新又回来,通常是三种情况:
- 计划任务里有下载脚本,crontab -l 看当前用户,再检查 /etc/cron.d、/var/spool/cron 下所有用户。
- 正常php文件被插入了include,指向另一个后门,删掉被引用的没用,要找到引用方。
- 后门进程常驻,用
ps aux | grep -v grep | grep -E "php|sh"看有没有可疑的常驻php或sh,尤其是指向/tmp、/dev/shm的。
把这三处清完,再删后门文件,才不会再长出来。
日志特征:怎么判断是不是已经被打进来了
看access.log两个信号:一是短时间大量POST到*.php,响应200但返回体积只有20到50字节,UA是Mozilla/4.0或空,这是后门在回显命令结果;二是上面提到的三个CVE路径出现且返回200,说明入口已经被利用。后门的mtime通常紧贴这些POST的首条时间,把两者对齐看,能反推出攻击者落地了哪些文件。
修复顺序:先断入口,再清残留,最后改口令
顺序错了就是白干:先升级或删除存在漏洞的组件(ThinkPHP、Ignition、PHPUnit),关闭debug,再按上面的命令清残留,然后改数据库、SSH、面板口令,最后检查出网连接,看有没有反向shell。改密码放在清残留之后,否则攻击者用旧后门照样能再进来。
这类问题排查思路大致如上。如果拿不准自己的站有没有中招,可以联系:电话 18316973247,微信 yswl898,先做个免费检测看看结果。
推荐阅读
- 网站被攻击修复别乱删文件,从应急响应顺序讲起 2026-10-16
- 服务器PHP后门清除后又被二次感染怎么办?排查与修复思路 2026-10-16
- 网站清理网页解密与高危漏洞修复服务对比 2026-10-16
- 服务器被黑如何修复?网站运维与网站修复实战指南 2026-10-16
- 网站木马清除:别等搜索引擎拉黑才后悔 2026-10-15


