网站被挂马了怎么处理:先取证再清理,顺序错了等于没清
· 技术笔记 · 0 条评论

网站被挂马,最典型的开场是:搜索引擎提示「该网站可能被入侵」,或者访客说「点你的站会跳到别的地方」,或者你打开自己网站发现首页被加了几个陌生链接。多数人的第一反应是登进后台把陌生代码删掉,然后过两天它又回来了。

这篇文章讲清楚两件事:马是怎么进来的,以及怎么才能真正清干净。只删代码不查入口,永远是白干。

先搞明白:马从哪进来的

Typecho 和 WordPress 本身被直接打穿的漏洞不多,绝大多数入侵走的是这三条路:

1. 密码被爆破或泄露

后台密码是弱口令(admin、123456)、或者和别的网站用同一个密码被撞库。日志里会有一堆 POST /admin/login.php 或者 /wp-login.php 的失败记录。这类入侵最难看出来,因为攻击者用的是合法账号,从后台装插件、发文章,日志上一切正常。

2. 主题、插件里的后门

从论坛下的破解主题、网上找的「增强版插件」,这是重灾区。有些人会在主题的 functions.php 里塞一段看起来像正常功能的代码,实际可以远程加载任意文件。表现是:网站看起来正常,但服务器上莫名其妙多出文件、或者流量异常。

3. 老旧程序和已知漏洞

Typecho 用着几年前的版本,WordPress 装着两年没更新的插件。这类漏洞网上有公开的利用工具,扫描器一扫就能批量打。

清理流程:顺序错了等于没清

很多人第一步就是删文件,这是最错的一步。正确顺序是先取证、再断源、后清理。

第 1 步:先备份现场

把整个网站目录和数据库完整打包,存到本地。原因很实在:清理过程中你很可能删掉不该删的东西,或者清完还是有问题,需要回头比对。没有原始备份,后面所有判断都只能靠猜。

tar -czf /tmp/site-before.tar.gz /www/wwwroot/你的网站
mysqldump -u 用户名 -p 数据库名 > /tmp/db-before.sql

第 2 步:找出最近被改动的文件

这是定位入口最有效的一招。后门文件的时间戳通常和你平时的发布时间对不上:

find /www/wwwroot/你的网站 -type f -mtime -30 -name "*.php" | head -50

列出最近 30 天修改过的 PHP 文件,重点看这几类位置的陌生文件:

auto_prepend_file 要特别注意,它能让一个被改过的 .htaccess 让所有 PHP 请求都先加载后门文件,你逐个删文件都删不干净。

第 3 步:断开入口

清理之前先切断攻击者再进来的路,否则你边清他边装:

第 4 步:清理后门

按第 2 步列出来的清单逐个处理。几个判断技巧:

grep -rn "eval(base64_decode" /www/wwwroot/你的网站 --include="*.php"
grep -rn "auto_prepend_file" /www/wwwroot/你的网站 --include=".htaccess"

第 5 步:数据库也要查

马不只藏在文件里。文章正文、导航、主题设置(typecho_options 里的 theme:xxx)都可能被塞入脚本或隐藏链接。搜一下:

SELECT COUNT(*) FROM typecho_contents WHERE text LIKE '%<script%';
SELECT COUNT(*) FROM typecho_options WHERE value LIKE '%<iframe%';

搜索结果里有陌生域名,就说明数据库被污染了。

第 6 步:加固,防止二次中招

清完不做加固,一个月内大概率复发。必做的几件事:

  1. 升级到最新版程序,删掉不用的主题和插件(未启用的旧插件同样是入口)
  2. 后台登录加限制:改登录路径、加验证码、限制 IP、失败次数锁定
  3. 上传目录禁止执行 PHP。Nginx 加一段:
location ~* ^/usr/uploads/.*\.(php|php5|phtml)$ {
    deny all;
}
  1. 关闭不必要的文件写入权限,目录 755、文件 644,只有 usr/uploads 可写
  2. 开日志,保留至少 30 天,下次出事才有据可查
  3. 定期备份,并且备份文件不要放在网站目录里——这是最常见的失手点,备份被一起删掉就没救了

常见误区对照

做法为什么不行
只删首页的跳转代码跳转代码只是症状,后门文件还在,几小时后就恢复
直接重装程序、重新导入数据库数据库里的污染和上传目录的后门会跟着回来
只改后台密码后门是独立通道,不需要走后台登录
用扫描工具全盘扫一遍就放心混淆过的后门能绕过大部分特征扫描
清理完不加固入口没堵,同样的方式可以再来一次

什么时候值得找人处理

如果出现下面任何一种情况,建议别再自己删了:

这几种情况通常是后门藏得比较深(.htaccess 加载、图片里嵌 PHP、定时任务留后门),或者已经被拖过数据。越早介入,能保住的东西越多——尤其是收录和排名,掉了之后恢复比修复本身更花时间。

挂马清理、白屏修复、搬家与安全加固的服务范围和报价,写在 服务与报价 页。越早介入,能保住的收录和排名越多。

需要有人帮你把网站弄好?

上面这些问题我基本都修过。把报错截图和现象说清楚,我 30 分钟内告诉你:能不能修、多少钱、多久交付。

看服务与报价 复制微信号 发邮件

不接资源站、私服、外挂类项目。先说清需求,我判断能不能做之后再报价。

评论
微信 邮件 报价