php后门需定位、验证、清除、加固四步闭环;访问统计异常是强信号但需结合日志分析;定位要查最近修改文件、特征函数及日志高频路径;删前须停权限并排查进程、定时任务与数据库;加固须更新程序、禁用危险函数、限制上传目录执行权,并检查.user.ini等配置型后门。

PHP后门不是靠“删除”就能解决的,而是要定位、验证、清除、加固四步闭环;访问统计异常(比如大量来自非常规IP的/admin.php或/shell.php请求)确实是后门活跃的强信号,但不能单凭它下结论。
怎么快速定位可疑PHP后门文件
后门常伪装成正常文件名(如wp-config-backup.php、cache.php、update.php),或藏在上传目录、缓存目录、主题插件目录里。别只盯着.php后缀——.phtml、.php5、.phps也可能被解析执行。
- 用命令查最近修改的PHP类文件:
find /var/www -name "*.php*" -type f -mtime -7 -ls(重点关注-mtime -1或-mtime -3) - 搜索典型后门特征函数:
grep -r "eval\|base64_decode\|str_rot13\|gzinflate\|file_get_contents.*\$_" /var/www --include="*.php" --include="*.phtml" - 检查Web日志中高频访问但无对应路由的PHP路径,例如
access.log里反复出现/images/shell.php?cmd=whoami
为什么不能直接删掉发现的可疑文件
删错文件可能让网站崩溃(比如误删wp-load.php),更危险的是:很多后门会自我复制或通过数据库、计划任务、其他PHP文件二次加载——表面删了,实际还在运行。
- 先停掉该文件的Web可访问权限:
chmod 000 suspicious.php,再观察业务是否异常、攻击请求是否停止 - 用
lsof -i :80或ps aux | grep php确认是否有PHP进程正在读取该文件 - 检查
crontab -l和/etc/cron.d/下是否写入了定时下载/复活后门的任务 - 查数据库(尤其
wp_options表)有没有theme_mods_或option_value字段里base64编码的PHP代码
访问统计异常到底说明什么
统计工具(如百度统计、CNZZ)本身不记录服务器端真实请求,它们依赖JS埋点,所以看到“异常访问量”大概率是前端流量,和后门无关;真正有用的是Nginx/Apache的access.log和error.log。
立即学习“PHP免费学习笔记(深入)”;
- 如果
access.log里出现大量404但路径像后门(如/phpmyadmin/scripts/setup.php),可能是扫描行为 - 如果
200响应里有大量GET /xxx.php?e=eval&c=...这类参数,基本可确认已沦陷 - 注意User-Agent字段:常见后门管理器会用
python-requests、curl/7.*/或空UA,和浏览器流量明显不同
清理后必须做的三件事
清完不加固,等于给攻击者留了后门钥匙。
- 更新所有CMS核心、主题、插件——90%的PHP后门利用的是已知未修复漏洞(如WordPress
WP REST API未授权调用、ThinkPHPdebug模式RCE) - 禁用危险函数:在
php.ini中设置disable_functions = exec,passthru,shell_exec,system,proc_open,popen,pcntl_exec - 限制上传目录执行权限:Nginx配置里对
/uploads/加location ~ \.php$ { deny all; },Apache用.htaccess禁止解析
最易被忽略的一点:攻击者常在.user.ini或.htaccess里写入自动包含语句(如auto_prepend_file=/tmp/backdoor.php),这种后门不占PHP文件,却每次请求都加载——得查配置文件本身,而不是只扫PHP源码。











