f10@t's blog

Redis未授权访问漏洞及修补方法

字数统计: 611阅读时长: 2 min
2020/01/09

Redis

原理

这个漏洞的主要原因是没有正确的配置Redis的配置文件,主要的错误配置有一下几点(redis.conf):

  • protected-mode no 关闭了保护模式,允许外部的客户端使用redis-cli进行连接

  • bind 127.0.0.1 注释掉,导致redis服务暴露在外部

  • 没有设置密码

    默认的Redis安装好后,默认是会bind 本地地址的,并开启了protected-mode,因为他的角色定位就是配合平常的数据库软件来使用的,是一种快速的缓存的键值型数据库,所以如果将它暴露在因特网上,并没有正确的配置就会有风险。

攻击方法

错误配置后,攻击者可以访问Redis服务,利用Redis自身提供的config命令进行写文件的操作,并将自己的SSH公钥写入目标服务器的/root/.ssh目录下,然后使用私钥直接登录目标服务器

复现

清单

1
2
3
攻击机 : kali 10.10.10.12
靶机 :CentOS7 10.10.10.11
Redis版本: 3.2.0

下载好源码后编译,并修改redis.conf文件部分如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES
# JUST COMMENT THE FOLLOWING LINE.
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# bind 127.0.0.1 //此处将bind 127.0.0.1进行了注释

......

# By default protected mode is enabled. You should disable it only if
# you are sure you want clients from other hosts to connect to Redis
# even if no authentication is configured, nor a specific set of interfaces
# are explicitly listed using the "bind" directive.
protected-mode no //修改为no

......

使用src下的redis-server可执行文件 + 指定的配置文件运行Redis服务:

open-server

攻击方法:在靶机的/root/.ssh/目录下写入自己ssh的公钥,使用自己的私钥直接登录对方的机器

条件:

1
2
1. 靶机的Redis服务是使用root账号启动的
2. 靶机开启了ssh服务,允许使用秘钥登录

在kali中生成自己的SSH公私钥对:

image-20200109192855717

登录到Redis服务,切换路径并写入公钥内容保存,退出

image-20200109194431365

直接使用私钥登录

image-20200109194551921

其他攻击方法:

也可以向对方机器中写入一个crond任务,内容为反弹一个shell给自己或者向其web目录下写webshell,菜刀等直连即可

修补方法

  • 修改默认端口
  • 设置密码认证
  • 尽量以低权限来运行Redis服务
  • 限制登录IP

CATALOG
  1. 1. 原理
  2. 2. 攻击方法
  3. 3. 复现
  4. 4. 修补方法