网站被篡改后恢复:查看文件修改时间找到被改文件+还原备份+修复漏洞
网站被篡改后别急着重装。按「隔离现场 → 用文件修改时间圈出被改文件 → 还原备份 → 修复漏洞」的顺序处理,多数站点能恢复,且不会二次被入侵。
第 1 件事:先隔离现场,别让篡改继续扩散
发现首页跳转到博彩站、或者目录里冒出陌生文件时,第一反应不该是"删掉就完事"。先把现场按住:
- 把站点切到维护页,或临时停掉对外解析,同时把可疑文件打包留一份(溯源、报案都用得上);
- 改掉所有入口口令:主机面板、SSH、数据库、CMS 后台、FTP。SSH 建议改成密钥登录并换掉默认端口;
- 断开来路不明的组件:说不清来源的插件、主题、外链 JS,以及被偷偷写入的定时任务(
crontab -l一条条看)。
判断有没有被挂马,可以先用浏览器开发者工具看 Network,检查首页是否加载了陌生域名的脚本;再用 curl -I 你的域名 看响应头里有没有被塞进跳转。
第 2 件事:用文件修改时间圈出可疑文件
篡改一定留下时间痕迹。拿到 shell 后先按时间窗筛选:
find /www/wwwroot -type f -newermt "2025-01-01" ! -newermt "2025-01-31" -ls
把日期换成你怀疑的时间段,一般是入侵发生的前后几天。配套动作:
stat 文件名看 Modify / Change / Access 三个时间戳;ls -lt --time-style=full-iso | head -50快速浏览最近改动;find / -name "*.php" -mtime -7找近一周新增的脚本文件;- 用宝塔面板「文件」列表按修改时间排序,可视化程度更高。
要留意的是:正常更新插件、上传图片同样会改变时间,所以时间只能用来缩小范围,不能单独定罪。被改的核心文件通常集中在 index.php、functions.php、header.php、wp-config.php 这类入口和配置文件,以及 uploads、cache、tmp 这些本来不该出现可执行脚本的目录。
第 3 件事:判断哪些文件被改、改了什么
圈出可疑对象后,按三类情况分别处理:
- 内容被插入。全文搜索
eval(、assert(、base64_decode、gzinflate、$_POST[、<iframe等特征串,后门代码大多贴在文件末尾; - 新增文件。用扩展名白名单过滤,重点看伪装成图片的 .php、双后缀文件(如
logo.php.jpg); - 时间被回拨。攻击者可以用
touch伪造时间戳,所以要交叉核对文件体积和哈希值。
如果你手里有干净备份或官方源码,最省事的做法是做差异比对:diff -r 站点目录 官方源码目录,或者用 md5sum 生成文件清单与基线逐行对照。没有基线,就逐个打开可疑文件看尾部追加了什么。
第 4 件事:还原备份,方式取决于备份形态
不同备份,还原动作完全不同:
- 整机快照(云服务器快照):在控制台直接回滚。注意回滚会丢掉快照之后的文章、订单等增量数据,先手动导出;
- 面板定时备份:宝塔「网站 → 备份」选被入侵前的日期还原,还原后立刻核对文件时间是否回到正常区间;
- 只有数据库备份:只还原库,文件手动替换成官方版本,别整目录覆盖;
- 完全没有备份:逐文件替换官方源码,保留 uploads 和数据库,再进库检查 wp_options、wp_posts 之类的位置有没有被植入恶意内容。
建议顺序是先文件、后数据库、最后清缓存——页面缓存、CDN 缓存、OPcache 都要清,否则前台可能还在吐被篡改的页面。
第 5 件事:修复漏洞,堵住重新进来的路
只还原不补漏,往往几天内就被再打一次。排查入口按优先级来:
- CMS 与插件版本:升到当前稳定版,弃用的插件和主题直接删除而不是停用;
- 弱口令与后台暴露:改强密码、限制后台访问 IP、开启登录失败锁定;
- 上传点:检查表单上传、富文本编辑器、采集接口是否允许 php 之类可执行后缀;
- 目录权限:文件 644、目录 755,上传目录去掉执行权限;
- 数据库:改密码、删除多余账号、清理陌生授权;
- 定时任务与开机项:查
crontab -l、systemctl list-unit-files有无异常条目; - 服务器层:用云安全中心、D盾、河马查杀做一次全盘扫描,确认没有残留。
第 6 件事:恢复后的观察期与日常清单
恢复完成不等于收工。观察期内每周做一次例行核对:
- 重新生成文件哈希清单,看有没有新文件冒出来;
- 翻 access.log,按状态码和 UA 找异常请求;
- 在百度搜索资源平台提交安全检测与死链,让被挂马的快照和收录尽快更新;
- 开启异地备份(对象存储 + 定时任务),并把备份设为不可随意删除。
长期看,防住二次入侵靠的不是某个工具,而是三件事:可对比的文件基线、定期且能验证的备份、最小化的目录与账号权限。