【Redis升级---修复代码注入漏洞、缓冲区错误漏洞】

这篇具有很好参考价值的文章主要介绍了【Redis升级---修复代码注入漏洞、缓冲区错误漏洞】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Redis升级---修复代码注入漏洞、缓冲区错误漏洞】


👈【上一篇】
💖The Begin💖 点点关注,收藏不迷路💖
【下一篇】👉

🔻 一、漏洞组件详情

1.1 ⛳ 组件名称----Redis

1.2 ⛳ 组件版本----V4.0.8

1.3 ⛳ 是否合规----

1.4 ⛳ 漏洞类型----中间件漏洞

1.5 ⛳ 漏洞类型----涉及漏洞编号

CVE编号:CVE-2022-0543
CNNVD编号:CNNVD-202202-1622
----Redis 代码注入漏洞

CVE编号:CVE-2022-24735
CNNVD编号:CNNVD-202204-4527
----Redis Labs Redis 代码注入漏洞

CVE编号:CVE-2022-31144
CNNVD编号: CNNVD-202207-1675
----Redis Labs Redis 缓冲区错误漏洞

1.6 ⛳ 受影响版本区间

  • 版本<6.2.7
  • 7.0.0≤版本<7.0.4

1.7 ⛳ 漏洞简介

  • Redis 代码注入漏洞:

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

Redis 存在代码注入漏洞,攻击者可利用该漏洞远程执行代码。

  • Redis Labs Redis 代码注入漏洞 :

Redis 6.2.7 和 7.0.0 之前版本存在代码注入漏洞,该漏洞源于Lua 脚本执行环境存在问题。攻击者利用该漏洞可以实现以另一个Redis用户的权限执行脚本。

  • Redis Labs Redis 缓冲区错误漏洞:

Redis 7.0.4 之前版本存在安全漏洞,该漏洞源于针对特定状态的流键的特制 XAUTOCLAIM 命令可能导致堆溢出,并可能导致远程代码执行。

🔻 二、Redis版本升级(redis-4.0.8升级至redis-7.0.9)

🚩 注:本次升级环境为CentOS Linux release 7.9.2009 (Core)

2.1 ⛳ Redis当前版本查看、gcc版本查看

[root@zyl-docker ~]# redis-cli -v
redis-cli 4.0.8
[root@zyl-docker ~]#

[root@zyl-docker ~]# gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright © 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Redis 7.0.9 安装要求的gcc版本比较高,升级gcc版本见【linux离线升级gcc版本—gcc4.8.5–>gcc12.2.0】

2.2 ⛳ 旧版本数据及配置文件备份

2.2.1🍁 插入数据以便做升级测试

[root@zyl-docker init.d]# redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> set k2 v2
OK
127.0.0.1:6379>

2.2.2 🍁 旧版本数据及配置文件备份(有备无患)-升级说明

旧版安装目录:/usr/local/bin

旧版配置文件(需备份):/etc/redis/6379.conf

旧版数据存储目录(需备份):/var/lib/redis

日志文件:/var/log/redis/redis.log
   
###备份旧版配置文件
[root@zyl-docker ~]# cp /etc/redis/6379.conf /etc/redis/6379.conf_bak

###备份旧版数据文件 
[root@zyl-docker ~]# cp /var/lib/redis/dump.rdb /var/lib/redis/dump.rdb_bak
[root@zyl-docker ~]#

###备份旧版启动文件 
[root@zyl-docker src]# cd /etc/init.d/
[root@zyl-docker init.d]# mv redisd redisd_bak

2.2.3 🍁 停止旧版redis服务

###停止redis服务
[root@zyl-docker init.d]# service redisd stop
Stopping …
Redis stopped
[root@zyl-docker init.d]#

###redis进程查看,没有redis有关进程后再编译新版本
[root@zyl-docker init.d]# ps -ef | grep redis

2.3 ⛳ 编译安装新版redis-7.0.9

2.3.1 🍁 上传解压redis-7.0.9.tar.gz

###解压至/usr/local目录
[root@zyl-docker ~]# tar -zxvf redis-7.0.9.tar.gz -C /usr/local

2.3.2 🍁 编译redis-7.0.9

####cd 到新版redis-7.0.9解压目录
[root@zyl-docker ~]# cd /usr/local/redis-7.0.9/

###执行命令进行编译
[root@zyl-docker redis-4.0.8]# make MALLOC=libc

【Redis升级---修复代码注入漏洞、缓冲区错误漏洞】

2.3.3 🍁 make test

#####安装前检查
[root@zyl-docker redis-7.0.9]# make test

\o/ All tests passed without errors!
Cleanup: may take some time… OK
make[1]: Leaving directory `/usr/local/redis-7.0.9/src’
[root@zyl-docker redis-7.0.9]# make test

【Redis升级---修复代码注入漏洞、缓冲区错误漏洞】

可能会出现报错,tcl 版本过低原因,下载安装高版本tcl即可,可在【Redis编译安装】—redis-4.0.8篇—1.3.4小节 🍁 安装tcl-8.5 查看解决办法
   
报错:You need tcl 8.5 or newer in order to run the Redis test make: *** [test] Error 1

2.3.4 🍁 安装升级redis-7.0.9有关报错解决

####cd src 目录安装redis
[root@zyl-docker redis-7.0.9]# cd src && make install
报错:which: no python3 in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)

Hint: It’s a good idea to run ‘make test’ ; )
INSTALL redis-server
INSTALL redis-benchmark
INSTALL redis-cli
[root@zyl-docker src]#

【Redis升级---修复代码注入漏洞、缓冲区错误漏洞】

解决:查看Python版本和离线升级Python环境

###步骤一、查看本机Python版本,本机为Python 2.7.5,版本太低导致

[root@zyl-docker Python-3.6.5]# python --version
Python 2.7.5
[root@zyl-docker Python-3.6.5]#

###步骤二、 下载 Python-3.6.5.tgz ,并上传解压  
[root@zyl-docker ~]# tar -zxvf Python-3.6.5.tgz

###步骤三、配置、检查,指定安装到/usr/local/python3
[root@zyl-docker Python-3.6.5]# ./configure --prefix=/usr/local/python3
   
【Redis升级---修复代码注入漏洞、缓冲区错误漏洞】

###步骤四、安装Python-3.6.5,
[root@zyl-docker Python-3.6.5]# make && make install

再次报错:zipimport.ZipImportError: can't decompress data; zlib not available

【Redis升级---修复代码注入漏洞、缓冲区错误漏洞】

【Redis升级---修复代码注入漏洞、缓冲区错误漏洞】

####查看zlib,大概率是少安装了一些依赖包,猜测和zlib有关的那就是zlib-devel,尝试安装zlib-devel
[root@zyl-docker Python-3.6.5]# rpm -qa|grep zlib
zlib-1.2.7-18.el7.x86_64
[root@zyl-docker Python-3.6.5]#

###—下载安装zlib-devel—####
zlib-devel-1.2.7-18.el7.x86_64.rpm 下载

[root@zyl-docker ~]# rpm -i zlib-devel-1.2.7-18.el7.x86_64.rpm
[root@zyl-docker ~]# rpm -qa|grep zlib-devel

###检查zlib-devel
zlib-devel-1.2.7-18.el7.x86_64
[root@zyl-docker ~]#

####再次执行 make && make install
【Redis升级---修复代码注入漏洞、缓冲区错误漏洞】

###步骤五、建立软连接

【Redis升级---修复代码注入漏洞、缓冲区错误漏洞】
####cd /usr/bin/python,查看旧版python
python是一个软链接,可以直接删除,不影响原文件。

【Redis升级---修复代码注入漏洞、缓冲区错误漏洞】

[root@zyl-docker bin]# pwd
/usr/bin
[root@zyl-docker bin]#  
[root@zyl-docker bin]# rm -rf python

#####建立python3.6软连接  
[root@zyl-docker python3.6]# ln -s /usr/local/python3/bin/ /usr/bin/python3

[root@zyl-docker python3.6]# ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
[root@zyl-docker python3.6]#  
   
###步骤六、Python版本检查(已成功升级至Python-3.6.5)

[root@zyl-docker bin]# python --version
Python 3.6.5
[root@zyl-docker bin]#

2.3.5 🍁 再次安装redis-7.0.9

##cd /usr/local/redis-7.0.9 目录安装redis
[root@zyl-docker redis-7.0.9]# cd src && make install
[root@zyl-docker redis-7.0.9]# cd src && make install

Hint: It’s a good idea to run ‘make test’ 😉

INSTALL redis-server
INSTALL redis-benchmark
INSTALL redis-cli
[root@zyl-docker src]#

###redis版本检查(已成功升级至redis-cli 7.0.9)
[root@zyl-docker src]# redis-cli -v
redis-cli 7.0.9
[root@zyl-docker src]#

2.3.6 🍁 将redis-7.0.9启动脚本复制一份放到/etc/init.d目录下(开机自启)

[root@zyl-docker init.d]# cp /usr/local/redis-7.0.9/utils/redis_init_script /etc/init.d/redisd

【Redis升级---修复代码注入漏洞、缓冲区错误漏洞】

###执行开机自启命令###
[root@zyl-docker init.d]# chkconfig redisd on

2.4 ⛳ 启动新版redis-7.0.9测试

###启动redis
[root@zyl-docker init.d]# service redisd start
Starting Redis server…
[root@zyl-docker init.d]#

###redis进程查看
[root@zyl-docker init.d]# ps -ef | grep redis
root 21752 1 0 11:48 ? 00:00:00 /usr/local/bin/redis-server 127.0.0.1:6379
root 21789 1944 0 11:50 pts/0 00:00:00 grep --color=auto redis
[root@zyl-docker init.d]#  

###停止redis
[root@zyl-docker init.d]# service redisd stop
Stopping …
Redis stopped
[root@zyl-docker init.d]#

2.4.1 🍁 检查版本及数据

【Redis升级---修复代码注入漏洞、缓冲区错误漏洞】

###检查步骤2.2.1中插入的数据(k1,v1),(k2,v2)
[root@zyl-docker init.d]# redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> get k1
“v1”
127.0.0.1:6379> get k2
“v2”
127.0.0.1:6379>

###检查版本 
[root@zyl-docker ~]# redis-server -v
Redis server v=7.0.9 sha=00000000:0 malloc=libc bits=64 build=2f97593622c6128
[root@zyl-docker ~]#

[root@zyl-docker ~]# redis-cli -v
redis-cli 7.0.9
[root@zyl-docker ~]#

#######💞升级成功💞#######文章来源地址https://www.toymoban.com/news/detail-478037.html

🔻 总结—温故知新

❓ 本篇由实际工作中的问题延伸并解决,模拟生产环境而来
❓ redis代码注入漏洞了解
❓ 安装升级`redis-7.0.9`有关报错解决(Python3.6.5离线升级、zlib-devel-1.2.7-18.el7.x86_64 离线安装)
❓ redis有关目录详细了解和参数配置

👈【上一篇】
💖The End💖 点点关注,收藏不迷路💖
【下一篇】👉

到了这里,关于【Redis升级---修复代码注入漏洞、缓冲区错误漏洞】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Redis缓冲区溢出及解决方案

    缓冲区(buffer),是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。 在Redis中,主要有三个场景用到了缓冲区的概念。 在客户端和服务器端之间进行通信时,用来暂存客户端发送

    2023年04月12日
    浏览(31)
  • CVE-2023-5129 libwebp堆缓冲区溢出漏洞影响分析

    近日苹果、谷歌、Mozilla和微软等公司积极修复了libwebp组件中的缓冲区溢出漏洞,相关时间线如下: 9月7日,苹果发布紧急更新,修复了此前由多伦多大学公民实验室报告的iMessage 0-click 漏洞,漏洞被认为已经被NSO公司的Pegasus间谍软件所利用,漏洞编号CVE-2023-41064; 9月8日,

    2024年02月08日
    浏览(31)
  • sudo堆缓冲区溢出提权漏洞(CVE-2021-3156)

    这个漏洞被披露于2021年1月26日。漏洞的载体是我们常用的sudo命令。当sudo通过-s或-i命令行选项在shell模式下运行命令时,它将在命令参数中使用反斜杠转义特殊字符。但使用-s或-i标志运行sudoedit时,实际上并未进行转义,从而可能导致缓冲区溢出。因此只要存在sudoers文件(通

    2024年02月13日
    浏览(35)
  • libcurl Socks5 堆缓冲区溢出漏洞(CVE-2023-38545)详细分析

    curl 是用于在各种网络协议之间传输数据的命令行工具,libcurl 用于提供处理网络通信和数据传输的 Api 接口。curl 默认下载缓冲区为 102400 字节,但如果设置低于每秒 102400 字节,缓冲区大小会自动设置为更小的值。libcurl 下载缓冲区默认为 16KB,应用程序可通过 CURLOPT_BUFFERSI

    2024年02月08日
    浏览(31)
  • 【HUST】网络攻防实践|6_物联网设备固件安全实验|实验一 裸机缓冲区溢出漏洞利用

    写在最前: 大家分析的时候看一下自己学号是多少,然后分析对应的文件哈,我想都没想就打开01分析了,全部都做完了发现我不是这个文件,当事人现在就是很后悔,非常后悔呜呜呜呜呜。 打开 IDA Pro 7.6 ,打开 task1_0x.elf 文件, 选对应的选项。 然后点开 main 函数, f5 反汇

    2024年02月09日
    浏览(39)
  • 漏洞还原及验证环境构建-Microsoft Windows Server服务RPC请求缓冲区溢出漏洞(MS08-067)-【CNVD-2008-5105】-【CVE-2008-4250】

    虚拟机软件:vmware workstation 14 系统:Windows XP 系统、Kali系统 环境配置:(1)受害机:Windows XP SP3镜像(2)攻击机:Kali系统 (1)虚拟机受害机系统和攻击机系统之间能够相互通信 攻击机:Kali-192.168.110.129 目标机:Windows XP-192.168.110.128 (2)打开Windows XP系统,确定445端口开启

    2024年02月15日
    浏览(36)
  • 黑客攻击实战案例:12种开源情报收集、缓冲区溢出漏洞挖掘、路径遍历漏洞、自定义参数Cookie参数绕过2FA、二维码的XSS、恶意文件上传清单、反射型XSS漏洞、威胁情报搜索引擎

    黑客攻击实战案例:12种开源情报收集、缓冲区溢出漏洞挖掘、路径遍历漏洞、自定义参数Cookie参数绕过2FA、二维码的XSS、恶意文件上传清单、反射型XSS漏洞、威胁情报搜索引擎。 目前漏洞挖掘的常用方法只有一种就是人工分析为主,漏洞挖掘在很大程度上是个人行为,漏洞

    2024年02月04日
    浏览(37)
  • 【Linux】理解缓冲区

    我们发现 printf 和 fwrite (库函数)都输出了2次,而 write 只输出了一次(系统调用)。为什么呢?肯定和fork有关! C接口的函数被打印了两次系统接口前后只是打印了一次:和fork函数有关,fork会创建子进程。在创建子进程的时候,数据会被处理成两份,父子进程发生写时拷

    2024年01月23日
    浏览(45)
  • 8.缓冲区管理

    双缓冲区:TC+M 假设初始状态缓冲区1满,缓冲区2空,工作区为空。 刚开始缓冲区2为空,所以设备可以向缓冲区2中冲入数据耗时T,另一方面刚开始缓冲区1中是满的,所以刚开始就可以把缓冲区1中的数据传送到工作区中,M时刻工作区被充满,CPU就开始处理数据耗时C,处理完

    2024年02月11日
    浏览(28)
  • 理解缓冲区

    对于这样的代码,首先可以肯定的是 printf 语句先于 sleep 执行,既然如此那么就应该是先打印语句然后进行休眠,下面看看结果: 但这里却是先休眠以后再打印语句,这是因为存在一个叫缓冲区的东西,当我们要向外设写入数据(让显示器显示就是向显示器写入数据)时会将

    2023年04月25日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包