发现网站异常跳转、未知文件或资源占用突增,可能是 php 木马植入;需通过检查可疑 PHP 文件、分析 Web 日志、扫描特征码、禁用危险函数及启用 open_basedir 五步识别与防范。

如果您发现网站页面异常跳转、出现未知文件或服务器资源占用率突然升高,则可能是 PHP 木马已植入系统。以下是识别与防范 PHP 木马的具体操作步骤:
一、检查可疑 PHP 文件
攻击者常将木马伪装为正常 PHP 文件,放置在网站可写目录(如 upload、cache、tmp)或混淆命名(如 1.php、a.php、shell.php)。需人工筛查非业务逻辑的独立 PHP 脚本。
1、通过 ssh 登录服务器,执行命令:find /var/www -name “*.php” -type f -mtime -30,筛选近 30 天新增的 PHP 文件。
2、对结果中非项目源码目录下的 PHP 文件,使用 cat 文件名 | head -n 20 查看头部内容,重点识别 eval、base64_decode、gzinflate、str_rot13、assert 等危险函数调用。
立即学习“PHP 免费学习笔记(深入)”;
3、比对 git 或svn版本库记录,确认该文件是否为合法提交,无版本记录且含远程请求或文件写入行为的必须隔离。
二、分析 Web 访问日志中的异常请求
PHP 木马常通过 GET/POST 参数触发执行,日志中会留下高频、非常规路径或含 编码payload 的请求痕迹,是定位入口点的关键依据。
1、进入 apache 或nginx日志目录,执行:grep -E “.(php?|.php+|cmd=|shell=|action=)” /var/log/apache2/access.log。
2、筛选出返回状态码为 200 但 URL 含 base64|eval|system|passthru|exec|proc_open 等关键词的行。
3、提取对应 IP 地址,运行:grep “ 可疑 IP” /var/log/apache2/access.log | awk ‘{print $7}’ | sort | uniq -c | sort -nr,确认其高频访问的 PHP 脚本路径。
三、使用 linux 命令行 工具 扫描木马特征
利用系统自带命令快速匹配已知木马特征码,无需安装额外软件,适用于紧急响应场景。
1、在网站根目录执行:grep -r –include=”*.php” “eval.*base64_decode|file_put_contents.*$_(POST|GET|REQUEST)” .。
2、检测隐藏的空格或不可见字符干扰:运行grep -r –include=”*.php” $’t’ . | grep -v “vendor|node_modules”,定位含制表符的可疑行。
3、查找伪装成图片但实际为 PHP 的文件:find . -name “*.php” -o -name “*.jpg” -o -name “*.png” | xargs file | grep “PHP script”。
四、部署 PHP 禁用函数防护机制
通过限制危险函数执行能力,使多数常见 PHP 木马失去核心功能,从运行时层面阻断恶意行为。
1、编辑 php.ini 文件,定位 disable_functions 配置项,追加:eval,assert,system,exec,passthru,shell_exec,proc_open,popen,dl,pcntl_exec。
2、若使用 宝塔面板 ,在【PHP 设置】→【禁用函数】框中直接粘贴上述函数列表,点击保存后 重启 PHP 服务。
3、验证生效:新建 test.php,内容为 , 浏览器 访问返回 disabled 即成功。
五、启用 Open_basedir 限制脚本文件操作范围
防止木马突破网站根目录读取系统敏感文件(如 /etc/passwd、/etc/shadow)或跨站写入其他虚拟主机目录。
1、在 PHP 配置中设置:open_basedir = /var/www/html/:/tmp/:/usr/bin/,仅允许多个明确授权路径。
2、若使用 Nginx,于 server 块内添加:fastcgi_param PHP_ADMIN_VALUE “open_basedir=/var/www/html/:/tmp/”;。
3、测试绕过:上传含 fopen(‘/etc/passwd’, ‘r’) 的 PHP 文件,访问时应返回 Warning: fopen(): open_basedir restriction in effect 错误。
以上就是