PHP后门可能藏于缓存目录,需重点排查可执行后缀文件、含危险函数的二进制缓存及异常权限文件,并结合框架特性与运行环境综合判断。

PHP后门不是靠“删文件”就能清干净的,尤其当攻击者把恶意代码注入到缓存目录、序列化数据、或伪装成正常缓存文件时,直接 rm -rf 缓存目录反而可能触发后门自复活或导致业务中断。
怎么判断缓存目录里有没有PHP后门
缓存目录本身不执行代码,但若配置不当(如 open_basedir 未限制、include_path 混入缓存路径、或模板引擎动态 include 缓存文件),它就可能被利用。重点查三类文件:
- 后缀是
.php、.phtml、.php5的缓存文件(正常缓存不该有可执行后缀) - 内容含
eval(、base64_decode(、assert(、system(、shell_exec(的.cache/.dat/.ser文件(用grep -a扫二进制缓存) - 修改时间异常新、权限为
0644但属主是www-data或apache的文件(上传型后门常见特征)
ThinkPHP/Laravel/WordPress 缓存目录典型风险点
不同框架对缓存的处理逻辑差异大,不能一概而论:
- ThinkPHP 的
runtime/cache/默认只存 PHP 数组,但若开启cache.type = file且cache.path可写又没禁用解析,攻击者可能写入xxx.php并通过 URL 直接访问 - Laravel 的
storage/framework/cache/data/存的是serialize()数据,本身不执行,但如果业务代码里有unserialize(file_get_contents($cacheFile))且未校验来源,就构成反序列化入口 - WordPress 的
wp-content/cache/一般安全,但某些缓存插件(如 WP Super Cache)会生成.php文件用于直接输出,若插件存在任意文件写漏洞,这些.php就是现成后门载体
删后门前必须做的三件事
删错一个文件可能导致网站白屏或数据库连接丢失,别跳步:
立即学习“PHP免费学习笔记(深入)”;
- 先确认 Web 服务器用户(如
www-data)对缓存目录是否有execute权限 ——ls -ld /path/to/cache看是否含x;没有的话,PHP 文件根本不会被执行,优先查其他入口 - 检查
php.ini中disable_functions是否包含shell_exec,exec,system,passthru;如果没禁,再小的后门也能逃逸 - 用
lsof -i :80和ps aux | grep php确认当前运行的 PHP 进程是否加载了可疑扩展(如./backdoor.so),后门未必在文件系统里
缓存目录是否藏后门,取决于你如何用它,而不是它叫不叫 “cache”。最危险的不是找到一个 shell.php,而是发现某个缓存文件被反复重建、且重建逻辑由用户可控输入驱动 —— 那才是真正的活后门。










