|
凌晨两点,网站文件客户打来电话,后门后门说网站被人挂了赌博广告。发现我登录服务器,网站文件在web目录下翻了一会儿,后门后门就找到了那个藏在图片文件夹里的发现PHP文件——文件名是“logo.jpg.php”,大小只有2KB,网站文件但就是后门后门它,让整个网站变成了别人的发现提款机。 这种文件有个行话,网站文件叫webshell。后门后门简单说,发现就是网站文件一个网页后门,攻击者上传一个脚本,后门后门就能通过浏览器远程操控你的发现服务器。我见过最蠢的,直接叫“cmd.php”,也见过最狡猾的,把代码塞进合法文件的末尾,再用十六进制编码混淆,肉眼根本看不出来。 发现后门的第一步,永远不是删文件,而是搞清楚它怎么进来的。我习惯先查最近的访问日志,找那些异常的上传请求。有一次,我翻到一条POST记录,来自一个国外的IP,请求的URL是“/upload/avatar.php”,但服务器上根本没有这个文件——攻击者是先上传了一个小马(微型后门),再用它去下载大马(功能完整的webshell)。这种两步走的套路,现在很常见。 找到webshell之后,别急着删。先把它下载到本地,用文本编辑器打开,看看里面的代码干了什么。有的只是反弹一个shell,有的会读取服务器上的配置文件,把数据库密码发到指定邮箱。我碰到过一个狠的,直接把整个网站的源文件打包,上传到攻击者的云存储——那等于把家底都搬走了。 删掉文件只是治标,治本要堵住入口。检查一下是不是用了弱密码,比如“admin123”这种,或者某个插件有已知漏洞没打补丁。我有个客户,网站被黑三次,每次都是同一个旧版编辑器插件惹的祸,最后我帮他卸了那玩意儿,世界才清净。 还有一层容易被忽略——权限。把web目录的写权限收掉,只留必要的上传目录,而且上传目录禁止执行PHP。这个配置在Nginx或Apache里都能做,几行代码的事,能挡住九成的webshell攻击。 处理完现场,我习惯再扫一遍全盘,用命令找最近72小时内被修改的文件,排除掉自己更新的那些。有时候攻击者会放多个后门,删了一个,另一个还活着。最夸张的一次,我在一台服务器上找到17个webshell,分布在不同的目录,有的甚至伪装成日志文件。 说实话,webshell这东西,防是防不住的。只要你的网站有上传功能,有第三方组件,就存在被植入的可能。关键在于早发现、快处理。我建议每个站长定期检查一下访问日志里的可疑请求,或者装个简单的文件监控脚本,一旦有文件被修改,立刻报警。 那次凌晨的处理,最后花了四个小时。删了后门,修补了漏洞,改了所有密码,还帮客户把网站从备份里恢复了一遍。他问我能不能保证以后不再被黑,我笑了笑说,不能保证,但至少下次再进来,你会第一时间知道。 |