早期由于redis低版本发现远程可执行代码漏洞,导致被黑客植入挖矿木马,服务器沦为矿机。今年Struts2又出现该漏洞,一年前自己有用Struts2编写过一个网站,没想到今天被我遇到了,特地写文章记录一下。
前天,早上突然收到 国家互联网应急中心广东分中心的邮件。这名头都把我吓一跳,赶紧点击进去看一下,原来是说我以前的一个网站存在Struts2致命远程执行代码漏洞,需要尽快修复。
赶紧下载下来附件,根据内容对Struts2进行了升级。本来想着升级完就应该没什么问题了。结果网站发布完20分钟之后,客服就对我说,网站非常卡,还出现504错误。
对于这种问题,一般就是网关超时,这个时候突然收到阿里云的短信消息,说网站受到DDOS攻击。原来是受到了攻击,心里想着只需要重启一下Tomcat应该就没问题了。于是马上开干,重启完之后,网站果然恢复了正常。安心去搞其他事情了,万万没想到,不到20分钟,客服又反应网站很慢。按照道理黑客不可能一直守着你这台机器来攻击的,就算是竞争对手没这么多精力去搞。心想着应该是服务器中了病毒了。一直以为Linux是很安全的,不会中病毒。但是想到早上收到的邮件说Struts2存在这种漏洞,黑客可以利用该漏洞对服务器进行最高权限的修改以及挂马。
马上打开Xshell对服务器连接进行排查。第一次打开监控平台,并没有发现可以消耗CPU的进程,考虑到之前有过redis安全漏洞被黑客利用对服务器进行挖矿的案例,马上对tmp文件夹进行查看,一看真的不得了,竟然真的存在挖矿程序。这样的事情都让我遇上了,觉得可以去买张彩票了。
二话不说,直接 rm -rf ./Aegis-* 删除掉,这回重新启动一下Tomcat,网站恢复了正常。可是好景不长,不到20分钟,网站又罢工了。嘿,还真不信了,不用说,对方肯定是把该脚本写到定时任务上了,直接查看定时任务:
执行命令 :service crond status
自己这台服务器本来是没有启动定时任务的,这回竟然启动了。
接下来打开看一下具体定时任务:crontab -l
果然,这是一个从远程下载对应的脚本的定时任务,对改IP进行追踪,发现这是一个巴西的IP,通过各种技术,最终得出这是一个下载矿机进行门罗币挖矿的脚本。知道了这些就好办了。停止定时任务:service crond stop ,
对定时任务脚本进行删除。 rm -rf /var/spool/cron/* (这个删除写法只针对本来没有定时任务的,具体请删除对应的脚本文件)
最后重启Tomcat网站恢复正常,结束加班泪奔形态。
第二天早早来到公司,却收到了网站再次崩溃的消息,天啊!这病毒也太顽固了吧,这种问题不用说,肯定是对方有做守护进程。只能继续开干了:
top -c
通过对比,最终确认,/tmp/L6 竟然有重启功能,这肯定就是根源木马了。
kill -9 1522 杀掉该进程,以及删除对应的进程文件 rm -rf /tmp/L6
做完这些操作之后,心想着要做一次大排查,挖矿程序有没有可能存在多个地方?带着疑问去全局搜索了一下
find / -name Aegis-
还真发现在不同的文件夹存放着挖矿程序,对于这些文件只能一一去强制删除了,同时还排查了是否被创建另外的用户登录服务器呢?也做了查询:
发现有3个账号是可疑的,由于本人是后来接手该服务器的,所以谨慎的问了一下以前同事,最终确认最后的一个账号为异常账号,对这个账号进行了删除。
查看了一下该服务器的防火墙,真的是泪崩,该服务器竟然没有配置防火墙的。
赶紧配置好对应的开放端口,以及对刚才的IP进行拦截设置,重启防火墙。
最终重启了服务器,以及对应的软件。直至今天,网站一直运行正常,至此,该病毒已被完全清除。
总结:
对于服务器不要持太乐观的想法,Linux一样也会有漏洞,比如内核版本过低,这些就需要尽快升级,建议尽量少配置好防火墙,安装拦截木马软件,不要采用root账号进行软件安装等等……