劫持网站怎么修复

 人参与 | 时间:2026-10-17 06:51:33

网站被劫持,劫持第一件事不是网站急着删文件,而是修复断开服务器外网连接。去年一个做外贸的劫持朋友半夜给我打电话,说百度搜他们公司品牌词,网站结果点进去跳到了菠菜站。修复他第一反应是劫持重启服务器,结果重启完首页直接变成一张赌博图片。网站我让他立刻拔网线,修复他才反应过来——多在线一分钟,劫持搜索引擎快照和用户浏览器缓存都可能把脏东西扩散出去。网站

劫持和篡改是修复两码事。篡改动的劫持是你服务器上的文件,劫持往往只改“入口”。网站最常见的修复是DNS劫持:域名解析被指向了攻击者的IP。你本地文件干干净净,但用户访问时先去了别人家。查这个很简单,用ping或nslookup看域名解析出来的IP是不是你自己的。如果不对,登录域名注册商后台,检查DNS记录有没有被改,顺手把域名锁打开,开启whois隐私保护。有些注册商默认锁是关的,攻击者拿到你的账号密码就能直接改NS。

还有一种叫流量劫持,发生在运营商或公共WiFi层面。你服务器没问题,DNS也没问题,但用户数据包在路上被拦了。这种你单方面修不了,只能上HTTPS。全站强制HTTPS能挡掉大部分中间人注入,因为攻击者没法伪造证书。Let's Encrypt免费证书三分钟就能签一张,别偷懒。

如果DNS没问题,那就查服务器本身。先看.htaccess(Apache)或nginx配置文件里有没有奇怪的rewrite规则。攻击者喜欢加一条:判断User-Agent来自百度蜘蛛就返回正常页面,普通用户就302跳转。你本地用浏览器测可能一切正常,因为你的UA是普通用户,但实际已经被跳了。用curl -I带上百度蜘蛛的UA去请求,看看返回头里的Location是不是指向外站。

再翻网站根目录和每个子目录,找最近修改时间异常的文件。有个取巧的办法:用find命令按时间排序,比如find /var/www -mtime -3 -type f,把三天内改过的文件列出来。很多后门文件命名很随意,比如wp-config.php.bak、1.php、shell.php,或者伪装成图片的logo.jpg.php。别只看扩展名,用file命令查真实类型。

数据库也逃不掉。WordPress站点被劫持,八成是wp_options表里的siteurl和home被改了。攻击者把这两个值改成自己的域名,你前台所有链接都指向外站。进phpMyAdmin搜一下,改回来就行。还有wp_posts表里可能被插了隐藏的蜘蛛池链接,用display:none藏起来,用户看不见,但搜索引擎能抓到。

清完后门之后,别急着恢复访问。先改所有密码:服务器SSH、数据库、域名注册商、CMS后台。然后检查有没有计划任务(crontab)被加了定时拉取恶意脚本的任务。最后装个文件完整性监控,比如aide或tripwire,下次再有文件被改能第一时间知道。

我自己的习惯是,修完劫持后把网站日志翻一遍,找攻击者第一次进来的入口。通常是某个插件漏洞,或者后台弱密码。你不找到入口,清得再干净,过两周还会再中一次。有个客户就是,帮他清了三次,每次都是同一个WordPress插件没升级。后来直接把那个插件删了,再没出过事。

实在搞不定,别硬撑。找专业的安全团队做应急响应,花点钱比数据泄露划算。但记住,找人的时候别在服务器上直接给权限,先让对方远程看一下日志,确认靠谱再给SSH。这行骗子也不少。

顶: 2848踩: 2854