网站被黑了怎么修复正常
凌晨三点,网站手机开始疯狂弹邮件——客户网站首页被替换成一张黑底红字的被黑图片,上面写着“Hacked by XX”。修复后台登录不进去,正常数据库连接报错。网站这种场景我见过太多次,被黑每次处理完都像打了一场仗。修复网站被黑不是正常世界末日,但手忙脚乱只会让情况更糟。网站
先别急着拔网线。被黑断网确实能阻止攻击者继续操作,修复但也会切断你分析日志的正常通道。正确的网站做法是立刻通过服务器商的控制面板(比如宝塔、cPanel或者云服务商的被黑VNC)进入系统。如果连SSH都上不去,修复用救援模式挂载磁盘。我遇到过最极端的情况是攻击者改了SSH端口还封了IP,最后靠云服务商的网页版终端才挤进去。
进去之后第一件事:备份现场。把网站目录、数据库、系统日志全部打包下载到本地。别嫌麻烦,这些日志里藏着攻击者的IP、上传的webshell路径、甚至他用的漏洞。有一次我帮一个电商站做应急,发现攻击者是通过一个两年前就没更新的插件漏洞进来的,日志里清清楚楚记录着POST请求的payload。如果你直接重装系统,这些证据就没了。
接下来找后门。攻击者通常会留不止一个入口——可能是一个伪装成图片的PHP文件,也可能是在正常文件里插了一行eval。用命令find /var/www -name "*.php" -mtime -7列出最近七天被修改的PHP文件。再配合grep -r "eval\|base64_decode\|assert" /var/www扫一遍。别只盯着网站根目录,/tmp、/var/tmp、甚至图片上传目录都可能是藏身之处。我见过最隐蔽的一个后门,文件名是wp-config.php.bak,里面混了一段加密代码,不仔细看根本发现不了。
数据库也得查。攻击者可能往用户表里插了管理员账号,或者在文章内容里埋了恶意脚本。导出SQL文件,搜索admin、script、iframe这些关键词。有一次一个论坛被黑,攻击者在每个帖子的签名里加了跳转代码,前台看不出来,但搜索引擎抓取后直接跳转到博彩网站。
清理完这些,别急着恢复。先改密码——服务器SSH密码、数据库密码、网站后台密码、FTP密码,全部换掉,而且要用强密码。同时检查SSH的authorized_keys文件,攻击者可能留了公钥。再检查crontab定时任务,crontab -l和ls /etc/cron.*都看一遍,有些后门会定时复活。我中过招,清理完一个小时后网站又被改了,最后发现是/etc/cron.d/下有个每分钟执行一次的脚本。
修复漏洞才是根本。如果是CMS,升级到最新版;如果是自己写的代码,检查所有用户输入的地方有没有过滤。SQL注入、文件上传、命令执行——这三个是重灾区。找个空闲时间,用sqlmap或者nikto扫一遍自己的站,别等别人来扫。
最后一步,恢复网站。从备份里还原文件,但别直接覆盖——先把备份里的文件和当前被黑的文件做diff对比,确认备份是干净的。数据库导入后,检查一下有没有多余的账号。全部弄完,把服务器防火墙打开,限制SSH登录IP,装个WAF(比如ModSecurity)。
整个过程快的话两三个小时,慢的话一整天。别慌,按顺序来。被黑一次不丢人,丢人的是同一个漏洞被黑两次。









