漏洞产生的前提条件
1、redis绑定 在 0.0.0.0:6379,且没有进行添加防火墙规则避免其他非信任来源 ip 访问等相关安全策略,直接暴露在公网;
2、没有设置密码认证(一般为空),可以免密码远程登录redis服务。
环境准备
可参考官网准备redis server
https://redis.io/docs/getting-started/installation/install-redis-from-source/
启动redis,这里用6080端口做实验,默认端口是6379
漏洞1,利用公钥认证获取root权限
攻击机可以无密码登录到redis
在攻击机中生成ssh公钥和私钥,密码设置为空
进到.ssh目录,将生成的公钥保存到test.txt
(echo -e "\n\n";cat id_rsa.pub ; echo -e "\n\n") > test.txt
将保存ssh公钥的test.txt写入到redis中
获取redis的备份路径
修改redis的备份路径并将公钥写到服务器上
到这我们已经成功将自己的公钥上传到服务器了,这时我们就可以通过私钥进行ssh登录
如登录报错可通过
eval "$(ssh-agent -s)"
ssh-add
漏洞2,利用crontab
利用redis写入文件到周期性计划任务执行
定时任务已经在跑了
在攻击机上通过nc 监听指定的端口
nc -lvnp 8800
已经正常连接被攻击的机器
总结
通过上述实验告诉我们
1、redis要配置密码认证
2、不要用root启动服务
3、可以通过iptables 限制来源等等