网站被挂马怎么查?从外到内的排查清除全流程

📍 WDQWDWQD987AAAAA:216.73.217.146
📱 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
🔗 /dea54a591d97.html
📄

网站被挂马后,访问者可能被强制跳转到钓鱼页面,甚至下载恶意程序,而搜索引擎也会给站点打上危险标记,导致流量和用户信任度大幅下滑。想要高效定位并清除这些恶意代码,最稳妥的做法是沿着“用户端现象—服务器文件—自动化工具—访问日志”这条路径逐层排查。

1. 从访问端确认异常现象

先别急着登录服务器,找个干净的浏览器打开自己的网站,观察页面是否有异常行为。比如突然冒出从未见过的弹窗广告、滚动条位置自动跳动、点击链接却跳转到完全陌生的域名,或者页面响应速度明显变慢。

为了排除是个人设备中招,可以换一台系统纯净、没有安装任何第三方插件或安全工具的电脑再访问一次。手机流量和办公网络各试一遍,如果异常依旧复现,基本能判定问题出在网站服务器端。

1.1 检查页面源代码锁定可疑代码

在浏览器页面空白处点击鼠标右键,选择“查看页面源代码”,或者直接按 F12 打开开发者工具。接着用快捷键 Ctrl+F 在源代码中搜索 eval、base64_decode、document.write 这些高频特征字符串。重点留意是否存在指向陌生域名的 iframe 标签,以及由无意义字符组成的超长变量名。发现可疑片段后,先复制其中的域名或 IP 去搜索引擎比对人,绝大多数情况下能直接识别出是否属于已知的恶意载荷。

2. 深入服务器检查文件与进程

浏览端只能帮你确认“出了问题”,真正的清理工作必须回到服务器上进行。优先排查最近一两天内被修改过的文件,攻击者植入的恶意脚本大多在得手后短时间内生成,时间特征非常明显。

  1. 登录服务器进入网站根目录,执行 ls -lt 按修改时间倒序排列文件,重点检查 .php、.jsp、.aspx 等可执行类型的文件。
  2. 打开 /tmp、/var/tmp 以及站点的上传目录,查看是否有伪装成图片或文本、实际可以执行的脚本文件,这类文件常被命名为“xxx.jpg.php”以迷惑人工检查。
  3. 在项目目录下执行 grep -r "eval(base64_decode" .,能够快速揪出被编码混淆过的恶意代码块,搜索时也可以加上 assert、create_function 等关键词扩大范围。

如果文件系统扫描没有收获,还需要留意正在运行的进程。使用 ps aux 或 top 查看占用 CPU 资源最高的进程,核对进程的可执行文件路径是否指向业务目录之外的位置。部分木马会借用系统进程名做伪装,此时可以结合进程的启动时间与所属用户进行判断;若发现由 www 用户启动的异常进程,建议立即记录其 PID 和路径,在备份后终止并删除源文件。

3. 助扫描工具交叉验证

手工排查难免有遗漏,尤其是被深度加密混淆的恶意代码。建议在清理前和清理后各运行一轮自动化扫描工具,用比对结果来校验排查是否彻底。

需要提醒的是,工具标记的可疑文件不要直接删除。先把文件下载到本地做好备份,再进行隔离或重命名,避免误报导致正常业务功能失效,确认无误后才能彻底移除。

4. 通过日志回溯入侵入口

清除木马只是第一步,如果不对入侵路径进行封堵,攻击者可能利用同一个漏洞再次进入,第二天又会复发。这时需要花点时间翻看 Web 服务器的访问日志,例如 Nginx 的 access.log 或 Apache 的 access_log。

重点检索以下几类异常模式:某个 IP 在极短时间内连续发起大量 POST 请求;请求 URL 中带有 cmd、whoami、curl 等命令执行特征;User-Agent 字段呈现明显的脚本特征,而非真实浏览器的 UA 信息。

定位到可疑的源 IP 后,可以在主机防火墙或 CDN 层面对该地址进行封禁。同时检查攻击时段内网站后台的登录记录,看是否存在管理账号的暴力破解痕迹。如果发现某条日志指向了某个上传接口或插件漏洞,应当立即更新对应组件到最新版本,或者暂时停用该功能模块。

5. 常见问题

5.1 挂马后网站被搜索引擎标记为不安全怎么办

在完成恶意代码清理并封堵入侵入口后,可以登录百度搜索资源平台或 Google Search Console,在“安全与人为干预”或“安全检测”模块提交重新审核申请。提交前务必确认全站已无恶意代码残留,且 HTTP 响应头中没有异常跳转,一般审核通过后危险标记会在数日内取消。

5.2 清理后修改密码和密钥有必要吗

非常有必要。攻击者可能已经获取了服务器 SSH 密码、数据库账号或管理后台口令。清理完代码后,应尽快修改服务器 root 密码、数据库密码以及 CMS 后台管理密码,并重新生成 SSH 密钥对,同时撤销废弃的公钥授权,避免被残留的后门继续控制服务器。

5.3 找不到恶意文件但页面仍然异常怎么办

这种情况多半是恶意代码被写入到了内存或数据库缓存中,不落盘导致文件扫描发现不了。可以重启 Web 服务或整台服务器释放内存中的可疑进程,同时检查数据库字段中是否被插入了恶意的脚本片段,特别是文章内容、用户备注和建议配置项这类常有写入操作的字段。

6. 总结

应对网站挂马,核心思路是快速识别现象、准确定位文件、恢复业务安全并封堵漏洞。建议在日常就做好几项基础工作:定期备份整站文件与数据库、为服务器和 CMS 保持安全补丁更新、严格控制上传目录的执行权限。把所有操作记录在案,形成一套可复用的应急预案,未来再遇到类似问题时就能做到心中不慌、按步骤快速处置。

图1 图2

nginx