不欠 - Redis
type: channel
link: http://8owe.com/tag/Redis/
items: 关于Redis未授权访问getshell的几种方法

关于Redis未授权访问getshell的几种方法
type: item
date: 2020-12-13T17:18:00+08:00
description: 何为RedisRedis（Remote Dictionary Server )，即远程字典服务，是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库，并提供多种语言的API。何为Redis未授权访问Redis 默认情况下，会绑定在 0.0.0.0:6379，如果没有进行采用相关的策略，比如添加防火墙规则避免其他非信任来源 ip 访问等，这样将会将 Redis 服务暴露到公网上，如果在没有设置密码认证（一般为空）的情况下，会导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。攻击者在未授权访问 Redis 的情况下，利用 Redis 自身的提供的config 命令，可以进行写文件操作，攻击者可以成功将自己的ssh公钥写入目标服务器的 /root/.ssh 文件夹的authotrized_keys 文件中，进而可以使用对应私钥直接使用ssh服务登录目标服务器。产生条件：一、redis绑定在 0.0.0.0:6379，且没有进行添加防火墙规则避免其他非信任来源ip访问等相关安全策略，直接暴露在公网。 二、没有设置密码认证（一般为空），可以免密码远程登录redis服务。漏洞影响版本Redis 2.x，3.x，4.x，5.x漏洞危害攻击者无需认证访问到内部数据，可能导致敏感信息泄露，黑客也可以恶意执行flushall来清空所有数据； 攻击者可通过EVAL执行lua代码，或通过数据备份功能往磁盘写入后门文件； 最严重的情况，如果Redis以root身份运行，黑客可以给root账户写入SSH公钥文件，直接通过SSH登录受害服务器。靶机搭建这里可以使用多种系统搭建,博主习惯centos7，因为不可抗因素(懒)的原因，在这里我用aws的轻量完成了搭建， 这里你可以使用两台机器可能较为明显，一台作为redis服务端，一台作为客服端进行访问。 Ubuntu、Debian系统的命令为： apt update #这里先更新，然后选N apt install redis-server #安装redis server服务 此时已经安装完成 Centos系统的命令为： centos系统默认源不带有redis，所以我们要添加源，这里用第三方的epel源。 yum install epel-release -y #安装epel源 yum install redis -y #此时已经装好了 查看是否装上redis命令 systemctl status redis首先修改redis配置文件vi /etc/redis.conf # ~~~ WARNING ~~~ If the computer running Redis is directly exposed to the # internet, binding to all the interfaces is dangerous and will expose the # instance to everybody on the internet. So by default we uncomment the # following bind directive, that will force Redis to listen only into # the IPv4 lookback interface address (this means Redis will be able to # accept connections only from clients running into the same computer it # is running). # # IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES # JUST COMMENT THE FOLLOWING LINE. # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bind 127.0.0.1 #在bind前加一个#号注释掉 # Protected mode is a layer of security protection, in order to avoid that # Redis instances left open on the internet are accessed and exploited. # # When protected mode is on and if: # # 1) The server is not binding explic…