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就是现成后门载体
删后门前必须做的三件事
删错一个文件可能导致网站白屏或数据库连接丢失,别跳步: