40.Redis安装及利用Redis未授权访问漏洞的攻击与预防

redis是一个开源的,给予内存也可以持久化的日志型,key-value数据库。redis在默认情况下,会绑定0.0.0.0:6379,如果没有开启认证服务,会导致任意用户可以访问目标服务器,可以成功的在redis服务器上写入公钥,从而使用相应的私钥直接登录目标服务器。

一、redis安装过程

在官网上下载redis的安装包,下载完成后解压,进入redis的安装目录

1.make

8685807-4314abd0d8d46225.png

报错一:gcc未找到

8685807-80686fa6b42c6871.png

解决方法:安装gcc

8685807-2f0d6b819fe89785.png

2.再次 make

报错二:zmalloc.h:50:31: 错误:jemalloc/jemalloc.h:没有那个文件或目录

8685807-477c0ef805983d2d.png

解决方法:添加malloc=libc的参数

8685807-cbc826ef8a0ba1c3.png

3.make成功后,进入src目录

make install 成功

8685807-e5f2394251a61157.png


4.make test

报错三:You need tcl 8.5 or newer in order to run the Redis test

解决方法:下载tcl源码包并安装

wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz  

sudo tar xzvf tcl8.6.1-src.tar.gz  -C /usr/local/  

cd  /usr/local/tcl8.6.1/unix/  

sudo ./configure  

sudo make  

sudo make install   

5.为了方便管理,建立一个目录,将redis的配置文件和常用命令放进去

8685807-eca5d9f003459d4a.png

ps:redis安装步骤


二、模仿攻击

1.两台centos机器都已安装redis。

目标机器:192.168.252.130

攻击机器:192.168.252.128

1.1.查看目标机器上redis服务是否开启,若没有,则使用redis-server命令开启

8685807-cf1ee10b72236878.png
8685807-42e8a34fd093c32e.png

开启后发现redis服务默认前台执行,再开一个终端,查看端口情况,显示redis服务确已开启

8685807-366b6c5eb8fd3fcb.png

1.2.将redis服务放在后台执行,有三种办法

a.可以通过在命令后加一个&

b.命令执行和ctrl+z

8685807-a42d6610dd1ee493.png
8685807-c96d8fd2906e6ebc.png

1.3.修改配置文件

vim /usr/local/redis/redis.conf  //将daemonize no改为yes


8685807-433610f8f07fcb22.png
8685807-690885692251c0e1.png

再此开启redis服务,就直接在后台执行了。

8685807-e3513601055057b7.png

2.在攻击机器上配置

2.1使用ssh-keygen -t rsa会在/root/.ssh/目录下创建本地的ssh公私钥文件,id_rsa为私钥,id_rsa.pub为公钥文件

因为我这台虚拟机已经装过了,所以这边不覆盖(没有装过的,一直回车默认安装)

8685807-990e34f93ffe00dc.png

2.2进入/root/.ssh目录,将公钥写入foo.txt

8685807-1b1ad2904117f65f.png

2.3做好文件之后,尝试连接redis服务器,将foo.txt文件写入服务器中(将自己的公钥放在服务器)

8685807-f9868185b264ea74.png

报错一:连接不上

解决方法:在redis服务器上,修改配置文件/usr/local/redis/redis.conf,将bind 127.0.0.1注释

8685807-37ea327dd26cdc53.png
8685807-c32e0ed1e0fe1dc4.png

再次尝试连接redis服务器。

报错二:保护模式

8685807-aea8ab5faf98404b.png

解决方法:在redis服务器上,修改配置文件/usr/local/redis/redis.conf,将protected-mode yes改为no.

8685807-0a3244bb961d5554.png

再次尝试,成功。

8685807-73b38fcd29e12008.png

2.4连接redis服务器,并进入其/root/.ssh目录,将传入的foo.txt文件重新定义为authorized_keys。

8685807-9a7e632ae364eb5e.png

2.5在redis服务器端,查看刚刚收到的authorized_keys(即客户机的公钥)

8685807-3dc7125b1db0f5de.png
8685807-cf14e76679f62bdb.png

2.6以上步骤将自己的公钥写入到了该服务器上,就可以利用自己的私钥登录到该服务器上.

在192.168.252.128上使用ssh -i id_rsa [email protected] 命令来连接服务器

如上,已将成功连接到redis服务器上,并且具有root权限。

8685807-d804e0240d3bf7fb.png

三、预防攻击

1.预防方案1:修改配置文件,为其设置密码。

8685807-42eba367d6339064.png

客户机在连接redis服务器时需要输入刚刚设置的密码,否则不予理财。

8685807-b85b2a5ea95e432a.png

2.预防方案二:修改配置文件,取消bind 127.0.0.1的注释

8685807-52d5184ffd89c98c.png

客户机在连接redis服务器的时候会直接被拒绝。

8685807-92ee108aa0ff36b0.png

根据实验吧实验编写:redis未授权访问漏洞利用与修复

猜你喜欢

转载自blog.csdn.net/weixin_34235105/article/details/87232997