redis 漏洞复现

漏洞产生的前提条件

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
image

漏洞1,利用公钥认证获取root权限

攻击机可以无密码登录到redis
image
在攻击机中生成ssh公钥和私钥,密码设置为空
image
进到.ssh目录,将生成的公钥保存到test.txt

(echo -e "\n\n";cat id_rsa.pub ; echo -e "\n\n") > test.txt

将保存ssh公钥的test.txt写入到redis中
image
获取redis的备份路径
image
修改redis的备份路径并将公钥写到服务器上
image
image
到这我们已经成功将自己的公钥上传到服务器了,这时我们就可以通过私钥进行ssh登录
image
如登录报错可通过

eval "$(ssh-agent -s)"
ssh-add

漏洞2,利用crontab

利用redis写入文件到周期性计划任务执行
image

定时任务已经在跑了
image

在攻击机上通过nc 监听指定的端口

nc -lvnp 8800

已经正常连接被攻击的机器
image

总结

通过上述实验告诉我们
1、redis要配置密码认证
2、不要用root启动服务
3、可以通过iptables 限制来源等等

posted on 2022-11-30 15:59  每天进步一点点点点点  阅读(258)  评论(0编辑  收藏  举报