PHP后门怎么删除_SSH连接服务器怎样高效清后门【说明】

1次阅读

php后门清理需先定位、再验证、最后清理,不能仅靠删文件;ssh只是操作通道,关键在登录后的命令与判断逻辑。

PHP后门怎么删除_SSH连接服务器怎样高效清后门【说明】

PHP后门不能靠“删文件”就完事,得先定位、再验证、最后清理;SSH连接本身不负责清后门,它只是你操作的通道——真正关键的是你登录后执行的命令和判断逻辑。

怎么快速识别可疑 PHP 后门文件

后门常伪装成正常文件(比如 wp-config.php.bakcache.php1.php),或藏在日志、上传目录、模板目录里。别只盯着名字,重点看内容和行为:

  • find 扫描近期修改且权限异常的 PHP 文件:find /var/www -name "*.php" -mtime -7 -type f -ls
  • grep 检查常见后门特征函数:grep -r "eval|assert|base64_decode|system|passthru|exec|shell_exec" /var/www --include="*.php"
  • 注意隐藏文件和点开头的目录(如 .git.env 旁可能有 .shell.php
  • Web 访问日志里反复出现的非常规 PHP 路径(如 /uploads/2023/12/xxx.php)要人工确认是否合法

发现后门后别急着 rm -f

直接删可能误伤业务文件,也可能漏掉持久化机制。先做三件事:

  • ls -la 看文件属主和权限——后门常属 www-datanobody,但创建时间远早于其他同目录文件
  • cathead -n 20 查看开头几十行,典型一句话后门第一行往往是 <?php @eval($_POST['x']);?> 或混淆过的 base64_decode 调用
  • 临时重命名(如 mv shell.php shell.php.off),观察网站是否报错或功能异常——如果没影响,基本可判为后门
  • 检查该文件是否被其他脚本 include/require 过(用 grep -r "shell.php" /var/www

清完 PHP 文件还要查 SSH 层面的隐蔽入口

攻击者可能不止放 PHP 后门,还会加 SSH 密钥、新建用户、改 authorized_keys 或植入 ~/.bashrc 自启动项:

立即学习PHP免费学习笔记(深入)”;

  • 检查所有用户的 SSH 公钥:grep -r "ssh-rsa|ssh-ed25519" /home/*/.ssh/authorized_keys 2>/dev/NULL
  • 列出非系统用户:awk -F: '$3 >= 1000 && $3 != 65534 {print $1}' /etc/passwd,逐个查其 ~/.bash_history~/.profile
  • 检查定时任务:crontab -l(当前用户)、ls /etc/cron.d/cat /var/spool/cron/crontabs/* 2>/dev/null
  • 确认有没有异常进程监听非标端口:netstat -tulnp | grep ":3333|:8888|:9999"(这些是后门常用端口)

为什么有些后门删了又回来

因为没找到源头——可能是 CMS 插件漏洞未修复、弱密码被爆破、或服务器上跑着带远程命令执行(RCE)的旧版服务(如 thinkphp 5.0.23、Drupal 7.58)。删完后必须:

  • 升级所有 Web 应用及组件到官方最新稳定版
  • 禁用不必要的 PHP 函数(在 php.ini 中设 disable_functions = exec,passthru,shell_exec,system,proc_open,popen,pcntl_exec
  • 把网站根目录权限收紧:chown -R root:www-data /var/www + chmod -R 755 /var/www,上传目录单独设 www-data:www-data 且禁止执行
  • 别用密码登录 SSH,改用密钥 + sshd_config 中设 PermitRootLogin noAllowUsers

最麻烦的不是删文件,而是你不知道攻击者有没有留下内核模块、LD_PRELOAD 注入、或利用 systemd 用户服务自启——这种已超出 PHP 后门范畴,需要更底层的排查意识。

text=ZqhQzanResources