Struts2致命远程执行代码漏洞植入门罗币挖矿安装病毒解决方法

简介: 早期由于redis低版本发现远程可执行代码漏洞,导致被黑客植入挖矿木马,服务器沦为矿机。今年Struts2又出现该漏洞,一年前自己有用Struts2编写过一个网站,没想到今天被我遇到了,特地写文章记录一下。

早期由于redis低版本发现远程可执行代码漏洞,导致被黑客植入挖矿木马,服务器沦为矿机。今年Struts2又出现该漏洞,一年前自己有用Struts2编写过一个网站,没想到今天被我遇到了,特地写文章记录一下。

前天,早上突然收到 国家互联网应急中心广东分中心的邮件。这名头都把我吓一跳,赶紧点击进去看一下,原来是说我以前的一个网站存在Struts2致命远程执行代码漏洞,需要尽快修复。

image
image

赶紧下载下来附件,根据内容对Struts2进行了升级。本来想着升级完就应该没什么问题了。结果网站发布完20分钟之后,客服就对我说,网站非常卡,还出现504错误。

image

对于这种问题,一般就是网关超时,这个时候突然收到阿里云的短信消息,说网站受到DDOS攻击。原来是受到了攻击,心里想着只需要重启一下Tomcat应该就没问题了。于是马上开干,重启完之后,网站果然恢复了正常。安心去搞其他事情了,万万没想到,不到20分钟,客服又反应网站很慢。按照道理黑客不可能一直守着你这台机器来攻击的,就算是竞争对手没这么多精力去搞。心想着应该是服务器中了病毒了。一直以为Linux是很安全的,不会中病毒。但是想到早上收到的邮件说Struts2存在这种漏洞,黑客可以利用该漏洞对服务器进行最高权限的修改以及挂马。

马上打开Xshell对服务器连接进行排查。第一次打开监控平台,并没有发现可以消耗CPU的进程,考虑到之前有过redis安全漏洞被黑客利用对服务器进行挖矿的案例,马上对tmp文件夹进行查看,一看真的不得了,竟然真的存在挖矿程序。这样的事情都让我遇上了,觉得可以去买张彩票了。


矿机程序.png

二话不说,直接 rm -rf ./Aegis-* 删除掉,这回重新启动一下Tomcat,网站恢复了正常。可是好景不长,不到20分钟,网站又罢工了。嘿,还真不信了,不用说,对方肯定是把该脚本写到定时任务上了,直接查看定时任务:

执行命令 :service crond status


定时任务.png

自己这台服务器本来是没有启动定时任务的,这回竟然启动了。

接下来打开看一下具体定时任务:crontab -l


矿机定时任务.png

果然,这是一个从远程下载对应的脚本的定时任务,对改IP进行追踪,发现这是一个巴西的IP,通过各种技术,最终得出这是一个下载矿机进行门罗币挖矿的脚本。知道了这些就好办了。停止定时任务:service crond stop ,

对定时任务脚本进行删除。 rm -rf /var/spool/cron/* (这个删除写法只针对本来没有定时任务的,具体请删除对应的脚本文件)

最后重启Tomcat网站恢复正常,结束加班泪奔形态。

第二天早早来到公司,却收到了网站再次崩溃的消息,天啊!这病毒也太顽固了吧,这种问题不用说,肯定是对方有做守护进程。只能继续开干了:
top -c

image

通过对比,最终确认,/tmp/L6 竟然有重启功能,这肯定就是根源木马了。

kill -9 1522 杀掉该进程,以及删除对应的进程文件 rm -rf /tmp/L6

做完这些操作之后,心想着要做一次大排查,挖矿程序有没有可能存在多个地方?带着疑问去全局搜索了一下
find / -name Aegis-

还真发现在不同的文件夹存放着挖矿程序,对于这些文件只能一一去强制删除了,同时还排查了是否被创建另外的用户登录服务器呢?也做了查询:

image

发现有3个账号是可疑的,由于本人是后来接手该服务器的,所以谨慎的问了一下以前同事,最终确认最后的一个账号为异常账号,对这个账号进行了删除。

查看了一下该服务器的防火墙,真的是泪崩,该服务器竟然没有配置防火墙的。

image

赶紧配置好对应的开放端口,以及对刚才的IP进行拦截设置,重启防火墙。

最终重启了服务器,以及对应的软件。直至今天,网站一直运行正常,至此,该病毒已被完全清除。

总结:

对于服务器不要持太乐观的想法,Linux一样也会有漏洞,比如内核版本过低,这些就需要尽快升级,建议尽量少配置好防火墙,安装拦截木马软件,不要采用root账号进行软件安装等等……

目录
相关文章
|
Web App开发 算法 Java
JSON Web Token (JWT)生成Token及解密实战。
昨天讲解了JWT的介绍、应用场景、优点及注意事项等,今天来个JWT具体的使用实践吧。 从JWT官网支持的类库来看,jjwt是Java支持的算法中最全的,推荐使用,网址如下。
4322 0
|
数据采集 SQL 搜索推荐
大数据之路:阿里巴巴大数据实践——OneData数据中台体系
OneData是阿里巴巴内部实现数据整合与管理的方法体系与工具,旨在解决指标混乱、数据孤岛等问题。通过规范定义、模型设计与工具平台三层架构,实现数据标准化与高效开发,提升数据质量与应用效率。
4622 0
大数据之路:阿里巴巴大数据实践——OneData数据中台体系
|
关系型数据库 MySQL 数据库
[图解MySQL]MySQL组提交(group commit)
[图解MySQL]MySQL组提交(group commit)
19224 0
|
SQL 监控 Java
Mycat - 数据库分库分表中间件,国内最活跃的、性能最好的开源数据库中间件!
Mycat是什么 Mycat - 数据库分库分表中间件,国内最活跃的、性能最好的开源数据库中间件! 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替...
3652 117
|
弹性计算 固态存储 Linux
云服务器ECS,你真的懂吗?
云服务器ECS是阿里云最基础的弹性计算服务,总计规划了十余种规格族,几十种规格。用户在面对阿里云众多的产品种类,颇有种挑花了眼不知如何入手的感觉,本文就对阿里云最基础的云服务器ECS进行一下详细的介绍。
24211 5
|
机器学习/深度学习 人工智能 监控
阿里云首席科学家周靖人:数据智能引领产业变革
1024,是开发者的节日。云栖社区也准备了一份特别的礼物:《2016杭州云栖大会回顾专题》,共计325+份PDF下载,100+场峰会与分论坛视频点播的专题送给大家!也欢迎朋友们将参会感受、学习笔记等共享给我们。
25695 1
|
Ubuntu Linux Shell
Docker和孤儿进程、僵尸进程
#Docker和孤儿进程、僵尸进程 ##前言 在unix/linux系统中,正常情况下,子进程是通过父进程fork创建的。子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程到底什么时候结束。 当一个进程完成它的工作终止之后,它的父进程需要调用wait()或者waitpid()系统调用取得子进程的终止状态。 ### 孤儿进程 * 父进程先于子进程退出,那么子进程将
10596 0
|
SQL 算法 Java
一线架构师带你玩性能优化
系统优化一个方面是系统化的对IT系统或交易链上的每个环节进行分析并优化,另一个是对单一系统进行瓶颈点分析和调优。优化的目标无非是:提高系统的响应速度、吞吐量、降低各层耦合,以应对灵活对边的市场。
10083 0
|
API Docker 容器
使用dvm解决Docker的Daemon和Client版本不一致问题
服务通过Docker Swarm部署后,如果在开发机本地执行类似如下命令: ``` docker -H tcp://swarm.alibaba.net:8443 exec -it $containerId /bin/bash ``` 如果开发机本地Docker版本高于服务器上的版本(这是很容易发生的,稍微Geek的同学是无法容忍本地软件不是最新这一事实的!),就会得到类似如下错误:
7436 0
|
弹性计算 负载均衡 安全
业务需要全球部署?来看看企业级全球网络架构与解决方案
在阿里云云栖社区举办的在线分享直播中,来自阿里云的企业级网络产品经理李泉带来了《企业级全球网络架构和解决方案》的分享,分享中他主要从企业级全球网络、典型场景与方案、典型案例三个方面介绍了阿里云企业级全球网络架构与解决方案。
19858 0