php后门清理不能仅删文件,须检查多维度持久化机制、混淆型webshell、php配置篡改及系统层渗透痕迹。

PHP后门不能靠“删文件”就完事,必须先确认是否已被写入其他文件、是否启用持久化机制(如 .htaccess 重写、auto_prepend_file)、是否存在隐藏进程或 WebShell 衍生变种。一句话木马只是冰山一角,真正危险的是已获得权限后的横向渗透痕迹。
一眼识别 eval($_POST) 类一句话木马
这类木马核心特征是「接收外部输入 → 动态执行」,最常见组合是 eval + $_POST / $_GET / $_REQUEST,且往往刻意混淆变量名或用编码绕过简单扫描。
- 典型模式:
eval($_POST['x']);、@assert($_GET['a']);、call_user_func($_POST['f'], $_POST['p']); - 混淆手法:用
base64_decode、str_rot13、字符串拼接(如$a='e'.'v'.'a'.'l'; $a($_POST[1]);)隐藏函数名 - 注意伪装成正常代码的变体:在日志写入、图片上传、配置读取等函数附近插入执行逻辑,比如在
file_put_contents后紧跟include或require_once动态路径
grep 快速扫全站可疑 PHP 文件
别手动翻,用命令行批量筛查比任何 GUI 工具都快,关键是匹配「执行函数 + 外部输入」的组合,而非单个关键词。
- 基础扫描(推荐在网站根目录执行):
grep -r --include="*.php" "eval\|assert\|system\|exec\|shell_exec\|passthru\|popen\|proc_open" . | grep -E "\$_(POST|GET|REQUEST|COOKIE)\["
- 加一层防御性过滤(排除明显合法用法):
grep -r --include="*.php" "eval\|assert" . | grep -v "json_encode\|htmlspecialchars\|strlen" | grep -E "\$_POST\["
- 注意:
preg_replace('/.*/e', ...)这种正则修饰符e(已弃用但旧版本仍有效)也是高危点,需单独查:grep -r --include="*.php" "preg_replace.*\/e" .
检查 PHP 配置是否被篡改(常被忽略)
攻击者可能不写文件,而是通过修改 PHP 运行时配置加载后门,比如利用 auto_prepend_file 自动包含恶意脚本,这种情况下你删光所有 PHP 文件也无效。
立即学习“PHP免费学习笔记(深入)”;
- 检查当前生效配置:
php -i | grep "auto_prepend_file\|auto_append_file\|disable_functions"
- 重点看输出中的
auto_prepend_file值是否指向异常路径(如/tmp/x.php、/var/www/html/cache/.p) - 检查 Web 服务器配置:Apache 的
.htaccess是否含php_value auto_prepend_file;Nginx 的fastcgi_param PHP_VALUE是否注入了类似参数 -
disable_functions被清空或删掉system、exec等关键函数,往往是后门已运行并试图解除限制的信号
真正难处理的不是那几行 eval($_POST),而是攻击者是否已创建新用户、提权到 root、写入 crontab 或替换系统二进制文件。PHP 层清理只是第一步,后续必须检查进程、网络连接、计划任务和 SSH 登录日志。











