网站被挂马怎么办?Webshell 查杀与恶意文件清理实战教程

某天打开网站,页面莫名跳转到赌博网站;或者百度收录里全是”澳门线上娱乐”;再或者服务器流量突然暴涨、CPU 长期 100%。不用怀疑,十有八九是网站被种了 Webshell(网页后门)——黑客通过某个 Web 漏洞上传了一个后门文件,从此你的网站就成了他随取随用的”肉鸡”。Webshell 查杀是每个站长都必须掌握的技能,本文从特征识别到命令行清理,给出一套完整的实战流程。

一、先认识 Webshell:长什么样、藏在哪里

最常见的是”一句话木马”,核心思路很简单:让一个高危函数接收请求参数并执行任意代码。PHP 里常用的高危函数就那么几个,配合 POST、REQUEST、GET 传递的参数,外面套上 PHP 标签就能构成一个完整的后门,整段代码往往只有几行。这类文件通常被塞进图片文件尾部、主题模板或上传目录里,隐蔽性极强。

常见藏身位置:一是上传目录(图片、附件堆积的地方);二是伪装成图片的”图片马”,把代码藏在图片尾部;三是主题与插件目录里,混在正常模板文件中;四是网站根目录下伪装成常见文件名的文件。判断标准只有一条:不该出现 PHP 文件的目录里出现了 PHP 文件,就是头号嫌疑

二、实战排查:用命令快速定位可疑文件

不用装任何商业软件,几条 Linux 命令就能把大部分后门揪出来。按”时间 + 特征 + 权限”三个维度交叉排查(路径以宝塔默认站点目录 /www/wwwroot 为例):

# 1. 按修改时间:找出最近 7 天被修改的 PHP 文件
find /www/wwwroot -name "*.php" -mtime -7 -type f 2>/dev/null

# 2. 按危险函数特征搜索
# 说明:e[v]al 在正则中等价于 eval,功能不受影响
grep -rl -E "e[v]al\(|a[s]sert\(|sy[s]tem\(|shell_exec|passthru|base6[4]_decode" \
  --include="*.php" /www/wwwroot 2>/dev/null

# 3. 检查上传目录里的"图片"是不是真图片(file 会输出真实文件类型)
file /www/wwwroot/uploads/2026/08/*.jpg | head -20

# 4. 查看可疑文件的权限与属主,综合判断
ls -la /www/wwwroot/*.php | head -20

注意:grep 搜特征会有一批误报,正常主题文件里也可能出现个别关键词,所以要”修改时间 + 所在目录 + 文件内容”三者结合判断,上传目录里出现的高危函数文件,基本可以确认为后门。拿不准的文件先备份,别急着删。

三、查杀与清除:隔离、清理、断后路

定位到后门后,按下面步骤处理。强烈建议先用 ClamAV 做一次全盘扫描,再人工复核:

# 1. 先备份站点目录再处理,留作证据
cp -r /www/wwwroot /root/backup_www_$(date +%F)

# 2. 安装 ClamAV 并全盘扫描
yum install -y clamav clamav-update
freshclam
clamscan -r /www/wwwroot --remove -l /root/clamscan.log

# 3. 确认的后门文件先移入隔离目录,不要直接删除(留证 + 防误删)
mkdir -p /root/quarantine
mv /www/wwwroot/uploads/2026/08/shell.php /root/quarantine/

# 4. 备份并清理被篡改的定时任务(先备份再处理)
crontab -l > /root/cron_backup.txt
crontab -l | grep -v "curl|wget|/tmp/" | crontab -

清除后门后还有关键一步:检查数据库是否被写入恶意内容。登录 phpMyAdmin 或使用数据库管理工具,重点检查文章内容表(如 WordPress 的 wp_posts 表)里是否混入带挂马特征的记录,比如正文中出现远程加载代码或嵌入框架的条目,发现后立即删除,并确认不是正常业务内容。同时翻一下 Nginx 访问日志里上传接口的异常请求,搞清楚后门是怎么进来的——是文件上传漏洞、文件包含漏洞还是弱口令,把根因找到并修掉。

日志是判断入侵路径的最好材料:用 Nginx 访问日志按时间过滤出入侵前后的请求,重点看登录入口、上传接口和管理后台相关路径的异常请求;SSH 登录日志则能看出是否有暴力破解成功的记录。把可疑来源 IP 记下来,在防火墙或云防护里直接封禁,同时排查这些 IP 是否还访问过其他接口,防止遗漏第二处后门。

四、防再次入侵:权限收紧 + 防篡改监控

只清不防,后门迟早卷土重来。清理完成后做三件事:

第一,上传目录禁止执行 PHP,这是最关键的一步。在 Nginx 站点配置里加上下面这条 location 规则并 reload 生效,上传到目录里的后门文件即使存在也无法被当作程序运行:

location ~* ^/uploads/.*\.(php|php5|phtml)$ {
    deny all;
}

第二,收紧目录权限:站点文件统一设置为 644、目录统一设置为 755,删除多余的可执行权限,配合上传目录禁执行,让后门”传得上来也跑不起来”。

第三,建立文件完整性基线:先给站点目录生成一份哈希清单保存为基线文件,之后定期重新生成并与基线比对,新增或变化的文件会立刻暴露,入侵行为在第一时间就能被发现;如果保留有站点备份,还可以直接做目录差异比对,找出被篡改的文件。

把 Web 程序升级到最新版、禁用用不上的上传功能、开启 WAF 拦截恶意上传请求,这三条能挡掉绝大多数挂马入口。如果站点已经被多次挂马、自己排查费时费力,建议直接上一道云防护:速度网络的云 WAF 自带 Webshell 拦截与恶意文件告警,配合高防 CDN 还能隐藏源站 IP,从入口层杜绝大部分攻击。查杀是应急,防护才是常态——把本文这套流程存下来,真出事的时候,它能帮你少走至少一天弯路。

给TA打赏
共{{data.count}}人
人已打赏
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
在线客服
在线客服
热线电话
QQ客服
电子邮箱
suduwangluo