凌晨三点,网站客户电话把我从床上拽起来。被挂网站打不开了,马处首页飘着赌场广告,网站红底金字的被挂弹窗在手机屏幕上跳得刺眼。这不是马处第一次了,但每次遇到,网站后背还是被挂发凉。
先别慌,马处也别急着删文件。网站挂马这事,被挂处理顺序错了,马处等于给黑客留后门。网站我见过太多人上来就清病毒,被挂结果第二天又被挂,马处反复折腾半个月才明白——根子没挖掉。
第一步,切断伤害。立刻把网站从服务器上摘下来,换成静态维护页。这一步不是认怂,是止损。黑客可能还在后台挂着,你一边清理他一边上传,永远清不干净。如果服务器上有其他站点,最好一并隔离,挂马常常是整台机器沦陷,不是单个目录的事。
然后查日志,别凭感觉猜。打开Nginx或Apache的access log,找最近24小时里POST请求异常的IP,找上传接口的访问记录,找wp-admin或者后台登录路径的爆破痕迹。我上次处理一个案例,黑客是通过一个老旧的编辑器插件上传的webshell,日志里清清楚楚写着那个文件叫什么、什么时间进来的。知道怎么进来的,才知道门在哪。
找到webshell文件后,别急着删。先下载到本地留档,这玩意儿是证据,也是线索。分析它的代码,看它连接了哪个外部IP,调用了哪些系统函数。有些马会写计划任务,有些会改.htaccess,有些直接替换了核心文件。删掉一个文件不算完,要全盘扫描一遍,比对文件修改时间,尤其是最近一周被动过的PHP文件,逐个检查。
数据库也得查。很多挂马会往数据库里塞恶意链接,或者把正常内容替换成跳转代码。用phpMyAdmin导出一份SQL,搜一下base64_decode、eval、document.write这些敏感字符串。别嫌麻烦,这一步漏了,前面全白干。
清理干净后,改密码。不是改一个,是所有密码都改——FTP、数据库、后台、服务器SSH,包括服务器上所有站点的管理员账号。密码别用生日加姓名这种,用随机生成的16位字符串,存到密码管理器里。我之前碰到一个客户,挂马原因就是后台密码是admin123,黑客扫一下就能进去,连漏洞都不用找。
补漏洞是最后一步,也是最容易被忽略的一步。检查网站用的CMS和插件版本,过时的全更新。删掉不用的主题和插件,尤其是那些破解版、汉化版,里面经常藏着后门。服务器上的PHP版本、MySQL版本也升级到官方还在维护的版本。老版本的系统就像没锁门的房子,黑客随时能进来。
处理完这些,把网站重新上线,但别急着庆祝。接下来一周,每天看一遍日志,盯住404和POST请求。挂马后的第一周是复发高发期,黑客如果还留着后门,这时候会露头。等一周没动静,才算真正处理完。
说句实话,网站挂马这事,七分靠预防,三分靠处理。日常把权限收紧,上传目录禁止执行脚本,后台加个双因素认证,比出事之后熬夜补救强得多。但真遇上了也别慌,按这个顺序来——隔离、查日志、清文件、查数据库、改密码、补漏洞——一步一步走,基本能收拾干净。
最后提醒一句,处理完记得给服务器装个文件监控,哪怕用最简单的定时比对MD5也行。下次再有文件被改动,你第一时间就能知道,不用等到半夜被电话吵醒。