0x01 漏洞简述

Redis默认情况下,会绑定在0.0.0.0:6379(在redis3.2之后,redis增加了protected-mode,在这个模式下,非绑定IP或者没有配置密码访问时都会报错),如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源ip访问等等,这样将会将Redis服务暴露在公网上,如果在没有设置密码认证(默认为空)的情况下,会导致任意用户在可以访问目标服务器的情况下未授权访问Redis以及读取Redis的数据。攻击者在未授权访问Redis的情况下,利用Redis自身的提供的config命令,可以进行写文件操作,攻击者还可以成功将自己的ssh公钥写入目标服务器的/root/.ssh文件的authotrized_keys 文件中,进而可以使用对应私钥直接使用ssh服务器登录目标服务器。

0x02 风险等级

严漏洞的评定结果如下:
评定方式 等级
威胁等级 严重
影响面 广泛重

0x03 漏洞详情

redis绑定在 0.0.0.0:6379,且没有进行添加防火墙规则避免其他非信任来源ip访问等相关安全策略,直接暴露在公网;
没有设置密码认证(一般为空),可以免密码远程登录redis服务。

0x04 影响版本

Redis 2.x
Redis 3.x
Redis 4.x
Redis 5.x

0x05 漏洞验证

下载安装redis wgethttp://download.redis.io/releases/redis-3.2.11.tar.gz
Redis未授权访问漏洞复现

解压压缩包tarzxvfredis-3.2.11.tar.gz。
Redis未授权访问漏洞复现

进入解压目录redis-3.2.11执行make命令
Redis未授权访问漏洞复现

将redis-server和redis-cli拷贝到/usr/bin目录下,再次启动redis-server和redis-cli就不用每次都进入安装目录。
Redis未授权访问漏洞复现
Redis未授权访问漏洞复现

返回目录redis-2.8.17,将redis.conf拷贝到/etc/目录下:
Redis未授权访问漏洞复现

启动redis。
Redis未授权访问漏洞复现

编辑etc中的redis配置文件redis.conf
去掉ip绑定,允许除本地外的主机远程登录redis服务 前面加#注释掉
Redis未授权访问漏洞复现

将yes改为no,关闭保护模式,允许远程连接
Redis未授权访问漏洞复现

使用redis客户端直接无账号成功登录redis:
Redis未授权访问漏洞复现

在靶机写入cs.php文件
我们将shell写入/home/ubuntus/cs目录下,这里由于本地搭建,我们已经知道目录,如果没有的话需要在靶机创建一个目录。
由于某些原因靶机IP地址从172.16.16.214变为172.16.16.212.
Redis未授权访问漏洞复现

我们在靶机下查看文件是否创建成功,如下图:
Redis未授权访问漏洞复现

如果写入网站服务的路径下,后续可以使用工具连接shell

通过写入SSH公钥实现ssh登录
先在kali linux 上生成ssh公钥,一路回车:
Redis未授权访问漏洞复现

我们ssh里写入公钥配置文件key.txt,如下图:
Redis未授权访问漏洞复现

将key.txt写靶机(使用redis-cli -h ip命令连接靶机,写入文件)
cat key.txt|redis-cli -h 172.16.16.212 -x set *****
Redis未授权访问漏洞复现

下一步我们远程登录靶机的Redis服务,redis-cli -h 172.16.16.212
更改redis备份路径为ssh公钥存放目录
设置上传公钥的备份文件名字为authorized_keys
save保存
Redis未授权访问漏洞复现

我们查看靶机key与authorized_keys是否一致(如果不一致则会Permission denied)
Redis未授权访问漏洞复现

远程登录靶机的Redis服务,redis-cli -h 172.16.16.212,免密连接成功

Redis未授权访问漏洞复现

0x06 修复建议

1、禁止外部访问Redis服务端口
2、禁止使用root权限启动redis服务
3、配置安全组,限制可连接Redis服务器的IP

相关文章:

  • 2022-12-23
  • 2021-09-08
  • 2022-01-17
猜你喜欢
  • 2021-08-23
  • 2022-02-17
  • 2021-10-25
相关资源
相似解决方案