Redis未授权访问漏洞的利用及防护

Redis授权访问漏洞利用防护 什么是Redis授权访问漏洞

Redis在默认情况下,会绑定在0.0.0.0:6379。如果没有采取相关的安全策略,比如添加防火墙规则、避免其他非信任来源IP访问等,这样会使Redis服务完全暴露在公网上。如果在没有设置密码认证(一般为空)的情况下,会导致任意用户在访问目标服务器时,可以在未授权的情况下访问Redis以及读取Redis的数据。攻击者在未授权访问Redis的情况下,利用Redis自身的提供的config命令,可以进行文件的读写等操作。攻击者可以成功地将自己的ssh公钥写入到目标服务器的 /root/.ssh文件夹下的authotrized_keys文件中,进而可以使用对应地私钥直接使用ssh服务登录目标服务器。

简单来讲,我们可以将漏洞的产生归结为两点:

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

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

5b87c5853ea6f

漏洞可能产生的危害:

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

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

如果Redis以root身份运行,黑客可以给root账户写入SSH公钥文件,直接通过SSH登录受害者服务器

既然我们已经知道了攻击手法,那么我们该如何实现这一漏洞的利用呢?

Redis未授权访问漏洞的利用 环境准备

两台主机(这里我选择的是两台虚拟机,一台用的是Ubuntu,一台用的是Kali Linux)

redis-3.2.11.tar.gz

一、 安装redis服务 1. 从官网下载redis源码的压缩包 wget

5b8744851889e

2. 下载完成后,解压压缩包 tar xzf redis-3.2.11.tar.gz 3. 然后进入解压后的目录:cd redis-3.2.11,输入make并执行

5b8745177c2fb

出现如下即编译成功:

4. make结束后,进入src目录:cd src,将redis-server和redis-cli拷贝到/usr/bin目录下(这样启动redis-server和redis-cli就不用每次都进入安装目录了)

你可能会碰到如下问题:

python@ubuntu:~/Desktop/redis-3.2.11/src$ sudo cp redis-server /usr/bin/ cp: 无法创建普通文件'/usr/bin/redis-server': 文本文件忙

这个时候你先去检查/usr/bin目录下是否已经存在redis-server,如果不存在的话,我们选择停止服务:

python@ubuntu:~/Desktop/redis-3.2.11/src$ redis-cli -h 127.0.0.1 -p 6379 shutdown

或者直接杀死进程就好了:

python@ubuntu:~/Desktop/redis-3.2.11/src$ sudo kill -9 PID

5b878010608fd

我们再启动服务就好了~

python@ubuntu:~/Desktop/redis-3.2.11/src$ redis-server

5b8780b575659

此时我们再检查下/usr/bin目录下是否有redis-cli和redis-server:

python@ubuntu:~$ ls /usr/bin | grep redis

5b8782171b864

5. 返回目录redis-3.2.11,将redis.conf拷贝到/etc/目录下 python@ubuntu:~/Desktop/redis-3.2.11$ sudo cp redis.conf /etc/

6. 编辑etc中的redis配置文件redis.conf python@ubuntu:~/Desktop/redis-3.2.11$ vim /etc/redis.conf

去掉ip绑定,允许除本地外的主机远程登录redis服务:

5b878523a62c3

关闭保护模式,允许远程连接redis服务:

5b878644a500e

7. 使用/etc/目录下的redis.conf文件中的配置启动redis服务 root@kali:~/桌面/redis-3.2.11# redis-server /etc/redis.conf

5b878be47e049

这里我又踩了一个大坑,我遇到了这样一个问题:

python@ubuntu:~/Desktop/redis-3.2.11/src$ redis-server /etc/redis.conf *** FATAL CONFIG FILE ERROR *** Reading the configuration file, at line 80 >>> 'protected-mode no' Bad directive or wrong number of arguments

5b878c9991866

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyzwdg.html