网站webshell查杀,一句话木马识别方法
网站被植入webshell后,最常见的表现是首页被篡改、跳转到博彩页面或服务器向外发起异常请求。
一句话木马是其中体积最小、隐藏最深的一类。
本文按零基础也能执行的顺序,讲清楚从发现可疑文件到清理加固的完整流程。
准备排查环境
开始前先确认三件事:
- 备份网站文件和数据库。查杀过程中可能误删正常文件,备份是兜底手段。
- 确认网站根目录路径,例如宝塔面板默认在
/www/wwwroot/你的域名。 - 准备SSH工具,FinalShell、Xshell或系统自带终端均可。
登录服务器后,先记录当前时间,后续按修改时间筛选文件时要用到。
date
定位可疑文件
一句话木马通常体积很小,常见几十字节到几KB。
先按文件大小和修改时间筛选。
查找最近7天内被修改的PHP文件:
find /www/wwwroot -name "*.php" -mtime -7 -type f
查找小于5KB的PHP文件:
find /www/wwwroot -name "*.php" -size -5k -type f
重点检查上传目录、缓存目录和模板目录,这些位置权限较松,容易被写入。
find /www/wwwroot -path "*/uploads/*" -name "*.php"
如果结果里出现 uploads、cache、data 等目录下的PHP文件,基本可以判定异常。
正常业务不会把PHP脚本放在上传目录里。
一句话木马的典型特征
一句话木马的核心逻辑是接收外部参数并执行。
常见形式包括:
识别时关注这几个函数:eval、assert、system、exec、shell_exec、passthru、popen、base64_decode。
如果这些函数和 $_POST、$_GET、$_REQUEST 同时出现,风险极高。
用grep批量搜索:
grep -rn --include="*.php" -E "eval\(|assert\(|system\(|shell_exec\(|passthru\(" /www/wwwroot
注意:部分正常程序也会用到这些函数,需要结合文件路径和代码上下文判断。
清理与加固
确认木马文件后,不要直接删除,先重命名隔离:
mv /www/wwwroot/你的域名/uploads/x.php /tmp/x.php.bak
观察网站是否报错,确认无影响后再删除。
清理完成后做三件事:
- 修改数据库密码、后台管理员密码和FTP密码。
- 检查定时任务,删除可疑条目:
crontab -l。 - 检查SSH授权密钥:
cat ~/.ssh/authorized_keys,删除陌生公钥。
避坑与验证
不要只删文件不查入口。
木马能写进来,说明上传接口、弱口令或已知漏洞还没堵住。
建议同时更新CMS和插件到当前稳定版本。
不要忽略图片马。
有些木马藏在图片文件里,用以下命令检查图片中是否混入PHP代码:
grep -rl "
验证查杀效果:再次执行前面的find和grep命令,确认没有新的可疑文件;
观察网站访问日志,确认没有异常的POST请求持续出现。
如果使用宝塔面板,可在“文件”中按修改时间排序人工复查,并在“安全”中开启防火墙和木马查杀功能作为辅助。
常见疑问
查杀后网站打不开怎么办?
先看PHP错误日志,常见原因是误删了正常文件。从备份中恢复对应文件即可。
一句话木马和普通后门有什么区别?
一句话木马代码极短,通常只有一行,依靠外部传入参数执行命令,隐蔽性更强,但功能上同样危险。
多久排查一次比较合适?
建议至少每月检查一次文件修改记录,发现异常访问后立即排查。
网站webshell查杀的关键在于快速定位异常文件并切断入侵入口。
按本文步骤执行后,如果仍有可疑进程或外连,建议进一步检查系统层是否被植入其他后门。