上周四下午收到一个老朋友的消息,说他的公司网站出了问题——首页下面多了一段看不懂的代码,点击之后跳到一个莫名其妙的菠菜网站。他急得不行,问我能不能帮忙看看。
我先让他做了一件事:把网站临时下线,挂一个维护页面。很多人发现被黑之后第一反应是"赶紧看看什么情况",但每多一秒在线,对品牌信誉的伤害就多一分。特别是已经植入了恶意跳转的,搜索引擎很快会标记你的网站为高风险,一旦被标记,恢复正常之后流量也要很久才能回来。
下线之后我开始排查。第一步先看服务器日志,找到进入的路径。从nginx日志里发现三天前有一个访问记录很可疑,访问路径是/admin/login.php,返回了200。他公司的后台用的是几年前的老系统,admin后台路径没改过,密码复杂度也不够。攻击者应该是通过弱口令扫描进来的。
第二步是检查被修改的文件。网站的首页文件被注入了大约二十行混淆过的JavaScript代码。我看了下文件的修改时间,和日志里那条可疑记录的时间对得上。我又查了一遍uploads目录和可写目录下的文件,发现多了一个webshell文件——这是攻击者留的后门,方便以后随时进来。
第三步是清理,把被篡改的文件用备份恢复。但这里碰到了一个问题:他没有备份。或者说,他以为服务器商提供的快照功能就是备份,但那个快照只保留七天,刚好覆盖了被黑之前的版本,但问题不大。我建议他立刻开启自动备份,每天凌晨自动打包站点文件和数据库,保留三十天。
第四步是加固。改了管理员密码、换了后台路径、开启了登录验证码、关闭了文件上传目录的执行权限。这些操作都不复杂,但原来的系统一个都没做。
第五步,也是最容易被忽略的一步——检查搜索引擎的处罚状态。我让他去站长平台提交了死链和申诉,申请解除安全警告。
这件事折腾了一整天。他问我,做个网站安全防护大概多少钱。我说一两千块钱的事,比出了事再找人收拾划算得多。
网站安全防护