Redis未授权访问漏洞

释放双眼,带上耳机,听听看~!

一、简介

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

Redis因配置不当可以未授权访问。攻击者无需认证访问到内部数据,可导致敏感信息泄露,并且默认配置不会产生日志文件。攻击者还可以通过EVAL执行lua代码,或通过数据备份功能往磁盘写入后门文件。

如果Redis以root身份运行,可以给root账户写入SSH公钥文件,直接通过SSH登录受害服务器。

未授权访问漏洞因为配置不当可能导致大规模利用,如DDG等多个僵尸网络利用该漏洞进行迅速繁殖和占领算力,并且各大僵尸网络间都会互相删除彼此来保证自己对机器算力的掌握。

二、启动时遇到的问题

在修改配置文件后,启动的时候需要使用如下的命令./src/redis-server ./redis.conf ,不然修改的配置文件无法被加载,导致即使修改了配置文件也一直不能远程访问。

三、实战演示

  1. Kali远程访问centos7的redis服务,可以看到服务的版本、系统的版本、和配置文件的位置(大于2.8)

2.查看里面的key和对应的值

3. 删除redis数据,flushall 删除所有的数据,del key 删除键为key的数据

4.写入ssh公钥,获取系统权限

  原理:在数据库中插入一条数据,将本机的公钥作为value,key值随意,然后通过修改数据库的默认路径为/root/.ssh和默认的缓冲文件authorized.keys,把缓冲的数据保存在文件里,这样就可以再服务器端的/root/.ssh下生一个授权的key。

将公钥导入key.txt文件(前后用\n换行,避免和Redis里其他缓存数据混合),再把key.txt文件内容写入目标主机的缓冲里

因为本机centos默认不是root用户,所以只能在当前用户下创建/root/.ssh目录。如果远端用户为root并且存在对应目录,使用创建的密码或者免密登录服务器。

5.在crontab里面写定时任务,反弹shell,首先在客户端或在VPS监听一个端口,连接redis,写入反弹shell

6.在web目录下写入webshell

使用菜刀连接

用菜刀打开虚拟机终端执行命令

四、修复方法(重启redis才能生效)

   1.  禁用一些高危命令修改redis.conf文件,禁用远程修改DB文件地址

   2.  以低权限运行redis服务,为redis服务创建单独的用户和家目录,并且配置禁止登陆

   3.  为redis添加密码验证修改redis.conf文件

   4.  禁止外网访问redis,修改redis.conf文件,添加或修改。在redis3.2之后,redis增加了protected-mode,在这个模式下,非绑定IP或者没有配置密码访问时都会报错

   5.  修改默认端口

   6.  保证authorized_keys文件的安全。将authorized_keys的权限设置为对拥有者只读,其他用户没有任何权限,为保证authorized_keys 的权限不会被改掉,设置该文件的 immutable 位权限,还可以重命名 ~/.ssh,然后新建新的 ~/.ssh 目录和 authorized_keys 文件。要避免这种情况,需要设置 ~./ssh 的 immutable 权限

   7.  设置防火墙策略,可以设置iptables策略仅允许指定IP来访问redis服务

本文源自微信公众号:弥天安全实验室

人已赞赏
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新消息 消息中心
有新私信 私信列表
搜索