铭说 | Redis未授权访问漏洞Getshell
mhr18 2024-12-02 17:50 17 浏览 0 评论
01、Redis漏洞简介
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
Redis因为配置不当,会导致未授权访问,在一定条件成立的情况下,Redis服务器以root身份运行,黑客就能够给root账户写入SSH公钥文件,然后直接通过SSH登录目标受害的服务器,就能够直接提权目标服务器,然后进行一系列的数据增删查改操作,甚至是泄露信息,勒索加密等等,会对日常业务造成恶劣的影响。
一般情况下,Redis服务会绑定在服务器的6379端口上面,Redis的默认配置是不会开启认证的,如果没有采取相关防御举措,如在防火墙添加规避举措,避免其他非信任的IP访问等,这将会把Redis的服务直接暴露在公网上。
最直接的影响就是其他用户能够直接在未授权的情况下直接访问Redis服务器并进行相关恶意操作:
未授权访问 → 写入公钥 → 变更Redis DB文件存放为公钥目录 → 使用私钥登录
02、未授权访问检测
Redis的默认配置是只允许本地访问,默认配置是空口令。
一般会使用Nmap对目标机器进行扫描。如果发现主机的6379端口是对外开放的,并且目标主机开放外网访问的情况下,就能够在本机使用redis-cli服务连接目标服务器,然后进行恶意操作,黑客能够在未授权访问Redis的情况下,利用Redis自身提供的config命令,进行写文件操作,然后攻击者就能够将自己的ssh公钥写入目标Redis服务器的/root/.ssh文件中的authotrized_keys文件中,进而直接使用公钥对应的私钥直接使用ssh服务登录目标Redis服务器。
03、漏洞复现
- 配置Kali服务器172.16.35.109 为Redis靶机服务器
- 配置Kali服务器172.16.35.110 为Redis攻击机
1)在Redis靶机上输入命令redis-server /etc/redis.conf ,以root身份启动Redis服务
2)在攻击机上的Redis服务文件夹路径下使用 ./redis-cli -h 172.16.35.109在Redis 默认没有配置密码的情况下可以直接成功连接目标Redis服务器
3)连接验证,我们向靶机的目标路径下写入shell文件(这里的路径我们可以的通过phpinfo或者报错、查看源码、SQL注入,等一系列方法寻找出正确的物理路径)
至此,已证明Redis漏洞是存在的,能够进行未授权访问
04、利用公钥与私钥认证,获取root权限
先解释一下公钥与私钥的含义与作用:
公钥与私钥是一组生成的密钥,公钥是在生成后,拥有者公开发出去的加密方式,用外网中,用拥有者公钥加密的文件,只有拥有者相对应的私钥才能进行解密与配对,同样的,私钥加密的文件,只有相对应的公钥才能解密,公钥与私钥是成双成对的,它们互相解密。
1)确认靶机是开启Redis 服务的状态
2)在靶机中执行mkdir /root/.ssh创建ssh公钥存放目录(靶机是作为ssh服务器使用的)
3)然后在攻击机172.16.35.110中输入ssh-keygen -t rsa生成公钥和私钥,密码设置为空
4)cd .ssh/ 进入.ssh目录,将生成的公钥保存为1.txt
(echo -e “\n\n”; cat id_rsa.pub;echo -e “\n\n”)> 1.txt
5)然后将保存为1.txt的公钥文件通过redis-cli服务写入靶机
6)使用redis-cli 服务连接靶机
7)使用 CONFIG GET dir 查看Redis的备份路径
8)更改redis备份路径为ssh公钥存放目录
9)设置上传公钥的备份文件名字为authorized_keys
10)检查一下是否更新成功CONFIG GET dbfilename
11)在攻击机上使用ssh免密登录靶机172.16.35.109
12)使用ifconfig查看是登录成功 ip已为172.16.35.109
05、防御方案
(1)修改在Redis的目录下打开redis.conf文件
之前在配置靶机环境的时候,对redis.conf文件进行了相应改动,现在反其道而行,即可防御漏洞。将bind 127.0.0.1前面的注释符去掉,这里的bind 127.0.0.1是只允许本机访问,可以改成允许访问的来访IP制作白名单。修改之后,我们在Redis服务器启动Redis服务的时候,就不能仅仅输入redis-server /etc/redis.conf 来启动服务了,需要改成:redis-server [redis配置文件所在目录]/redis.conf ,这种修改方法的缺陷是,只允许一台机器访问Redis服务器。
(2)增加远程登录密码
打开redis.conf文件找到requirepass,然后在后面增加登录验证的密码,这样,攻击者再尝试使用ssh登录也就无法执行命令了。
相关推荐
- 【推荐】一个开源免费、AI 驱动的智能数据管理系统,支持多数据库
-
如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!.前言在当今数据驱动的时代,高效、智能地管理数据已成为企业和个人不可或缺的能力。为了满足这一需求,我们推出了这款开...
- Pure Storage推出统一数据管理云平台及新闪存阵列
-
PureStorage公司今日推出企业数据云(EnterpriseDataCloud),称其为组织在混合环境中存储、管理和使用数据方式的全面架构升级。该公司表示,EDC使组织能够在本地、云端和混...
- 对Java学习的10条建议(对java课程的建议)
-
不少Java的初学者一开始都是信心满满准备迎接挑战,但是经过一段时间的学习之后,多少都会碰到各种挫败,以下北风网就总结一些对于初学者非常有用的建议,希望能够给他们解决现实中的问题。Java编程的准备:...
- SQLShift 重大更新:Oracle→PostgreSQL 存储过程转换功能上线!
-
官网:https://sqlshift.cn/6月,SQLShift迎来重大版本更新!作为国内首个支持Oracle->OceanBase存储过程智能转换的工具,SQLShift在过去一...
- JDK21有没有什么稳定、简单又强势的特性?
-
佳未阿里云开发者2025年03月05日08:30浙江阿里妹导读这篇文章主要介绍了Java虚拟线程的发展及其在AJDK中的实现和优化。阅前声明:本文介绍的内容基于AJDK21.0.5[1]以及以上...
- 「松勤软件测试」网站总出现404 bug?总结8个原因,不信解决不了
-
在进行网站测试的时候,有没有碰到过网站崩溃,打不开,出现404错误等各种现象,如果你碰到了,那么恭喜你,你的网站出问题了,是什么原因导致网站出问题呢,根据松勤软件测试的总结如下:01数据库中的表空间不...
- Java面试题及答案最全总结(2025版)
-
大家好,我是Java面试陪考员最近很多小伙伴在忙着找工作,给大家整理了一份非常全面的Java面试题及答案。涉及的内容非常全面,包含:Spring、MySQL、JVM、Redis、Linux、Sprin...
- 数据库日常运维工作内容(数据库日常运维 工作内容)
-
#数据库日常运维工作包括哪些内容?#数据库日常运维工作是一个涵盖多个层面的综合性任务,以下是详细的分类和内容说明:一、数据库运维核心工作监控与告警性能监控:实时监控CPU、内存、I/O、连接数、锁等待...
- 分布式之系统底层原理(上)(底层分布式技术)
-
作者:allanpan,腾讯IEG高级后台工程师导言分布式事务是分布式系统必不可少的组成部分,基本上只要实现一个分布式系统就逃不开对分布式事务的支持。本文从分布式事务这个概念切入,尝试对分布式事务...
- oracle 死锁了怎么办?kill 进程 直接上干货
-
1、查看死锁是否存在selectusername,lockwait,status,machine,programfromv$sessionwheresidin(selectsession...
- SpringBoot 各种分页查询方式详解(全网最全)
-
一、分页查询基础概念与原理1.1什么是分页查询分页查询是指将大量数据分割成多个小块(页)进行展示的技术,它是现代Web应用中必不可少的功能。想象一下你去图书馆找书,如果所有书都堆在一张桌子上,你很难...
- 《战场兄弟》全事件攻略 一般事件合同事件红装及隐藏职业攻略
-
《战场兄弟》全事件攻略,一般事件合同事件红装及隐藏职业攻略。《战场兄弟》事件奖励,事件条件。《战场兄弟》是OverhypeStudios制作发行的一款由xcom和桌游为灵感来源,以中世纪、低魔奇幻为...
- LoadRunner(loadrunner录制不到脚本)
-
一、核心组件与工作流程LoadRunner性能测试工具-并发测试-正版软件下载-使用教程-价格-官方代理商的架构围绕三大核心组件构建,形成完整测试闭环:VirtualUserGenerator(...
- Redis数据类型介绍(redis 数据类型)
-
介绍Redis支持五种数据类型:String(字符串),Hash(哈希),List(列表),Set(集合)及Zset(sortedset:有序集合)。1、字符串类型概述1.1、数据类型Redis支持...
- RMAN备份监控及优化总结(rman备份原理)
-
今天主要介绍一下如何对RMAN备份监控及优化,这里就不讲rman备份的一些原理了,仅供参考。一、监控RMAN备份1、确定备份源与备份设备的最大速度从磁盘读的速度和磁带写的带度、备份的速度不可能超出这两...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle位图索引 (63)
- oracle批量插入数据 (62)
- oracle事务隔离级别 (53)
- oracle 空为0 (50)
- oracle主从同步 (55)
- oracle 乐观锁 (51)
- redis 命令 (78)
- php redis (88)
- redis 存储 (66)
- redis 锁 (69)
- 启动 redis (66)
- redis 时间 (56)
- redis 删除 (67)
- redis内存 (57)
- redis并发 (52)
- redis 主从 (69)
- redis 订阅 (51)
- redis 登录 (54)
- redis 面试 (58)
- 阿里 redis (59)
- redis 搭建 (53)
- redis的缓存 (55)
- lua redis (58)
- redis 连接池 (61)
- redis 限流 (51)