??【上一篇】 |
??The Begin?? 點(diǎn)點(diǎn)關(guān)注,收藏不迷路??
|
【下一篇】?? |
?? 一、漏洞組件詳情
1.1 ? 組件名稱----Redis
1.2 ? 組件版本----V4.0.8
1.3 ? 是否合規(guī)----否
1.4 ? 漏洞類型----中間件漏洞
1.5 ? 漏洞類型----涉及漏洞編號(hào)
CVE編號(hào):
CVE-2022-0543
CNNVD編號(hào):CNNVD-202202-1622
----Redis 代碼注入漏洞
CVE編號(hào):
CVE-2022-24735
CNNVD編號(hào):CNNVD-202204-4527
----Redis Labs Redis 代碼注入漏洞
CVE編號(hào):
CVE-2022-31144
CNNVD編號(hào):CNNVD-202207-1675
----Redis Labs Redis 緩沖區(qū)錯(cuò)誤漏洞
1.6 ? 受影響版本區(qū)間
版本<6.2.7
7.0.0≤版本<7.0.4
1.7 ? 漏洞簡(jiǎn)介
Redis 代碼注入漏洞:
Redis Labs Redis是美國(guó)Redis Labs公司的一套開源的使用ANSI C編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、鍵值(Key-Value)存儲(chǔ)數(shù)據(jù)庫(kù),并提供多種語(yǔ)言的API。
Redis 存在代碼注入漏洞,攻擊者可利用該漏洞遠(yuǎn)程執(zhí)行代碼。
Redis Labs Redis 代碼注入漏洞 :
Redis 6.2.7 和 7.0.0 之前版本存在代碼注入漏洞,該漏洞源于Lua 腳本執(zhí)行環(huán)境存在問(wèn)題。攻擊者利用該漏洞可以實(shí)現(xiàn)以另一個(gè)Redis用戶的權(quán)限執(zhí)行腳本。
Redis Labs Redis 緩沖區(qū)錯(cuò)誤漏洞:
Redis 7.0.4 之前版本存在安全漏洞,該漏洞源于針對(duì)特定狀態(tài)的流鍵的特制 XAUTOCLAIM 命令可能導(dǎo)致堆溢出,并可能導(dǎo)致遠(yuǎn)程代碼執(zhí)行。
?? 二、Redis版本升級(jí)(redis-4.0.8升級(jí)至redis-7.0.9)
?? 注:本次升級(jí)環(huán)境為CentOS Linux release 7.9.2009 (Core)
。
2.1 ? Redis當(dāng)前版本查看、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版本比較高,升級(jí)gcc版本見【linux離線升級(jí)gcc版本—gcc4.8.5–>gcc12.2.0】
2.2 ? 舊版本數(shù)據(jù)及配置文件備份
2.2.1?? 插入數(shù)據(jù)以便做升級(jí)測(cè)試
[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 ?? 舊版本數(shù)據(jù)及配置文件備份(有備無(wú)患)-升級(jí)說(shuō)明
舊版安裝目錄:
/usr/local/bin
?
舊版配置文件(需備份
):/etc/redis/6379.conf
?
舊版數(shù)據(jù)存儲(chǔ)目錄(需備份
):/var/lib/redis
?
日志文件:/var/log/redis/redis.log
? ?
###備份舊版配置文件
[root@zyl-docker ~]# cp /etc/redis/6379.conf /etc/redis/6379.conf_bak
?
###備份舊版數(shù)據(jù)文件?
[root@zyl-docker ~]# cp /var/lib/redis/dump.rdb /var/lib/redis/dump.rdb_bak
[root@zyl-docker ~]#
?
###備份舊版啟動(dòng)文件?
[root@zyl-docker src]# cd /etc/init.d/
[root@zyl-docker init.d]# mv redisd redisd_bak
2.2.3 ?? 停止舊版redis服務(wù)
###
停止redis服務(wù)
[root@zyl-docker init.d]# service redisd stop
Stopping …
Redis stopped
[root@zyl-docker init.d]#
?
###redis進(jìn)程查看,沒(méi)有redis有關(guān)進(jìn)程后再編譯新版本
[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/
?
###執(zhí)行命令進(jìn)行編譯
[root@zyl-docker redis-4.0.8]# make MALLOC=libc
?
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
?
可能會(huì)出現(xiàn)報(bào)錯(cuò),tcl 版本過(guò)低原因,下載安裝高版本tcl即可,可在【Redis編譯安裝】—redis-4.0.8篇—1.3.4小節(jié) ?? 安裝tcl-8.5 查看解決辦法
? ?報(bào)錯(cuò):You need tcl 8.5 or newer in order to run the Redis test make: *** [test] Error 1
2.3.4 ?? 安裝升級(jí)redis-7.0.9
有關(guān)報(bào)錯(cuò)解決
####cd src 目錄安裝redis
[root@zyl-docker redis-7.0.9]# cd src && make install報(bào)錯(cuò):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]#
?
?解決:查看Python版本和離線升級(jí)Python環(huán)境
?
###步驟一
、查看本機(jī)Python版本,本機(jī)為Python 2.7.5,版本太低導(dǎo)致[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
? ?
?
###步驟四
、安裝Python-3.6.5,
[root@zyl-docker Python-3.6.5]# make && make install
?再次報(bào)錯(cuò):zipimport.ZipImportError: can't decompress data; zlib not available
?
?
?
####查看zlib,大概率是少安裝了一些依賴包,猜測(cè)和zlib有關(guān)的那就是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 ~]#
?
####再次執(zhí)行 make && make install
?
?
###步驟五
、建立軟連接
?
####cd /usr/bin/python,查看舊版python
python是一個(gè)軟鏈接,可以直接刪除,不影響原文件。
?
?
[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版本檢查(已成功升級(jí)至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版本檢查(已成功升級(jí)至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啟動(dòng)腳本復(fù)制一份放到/etc/init.d目錄下(開機(jī)自啟)
[root@zyl-docker init.d]# cp /usr/local/redis-7.0.9/utils/redis_init_script /etc/init.d/redisd
?
?
###執(zhí)行開機(jī)自啟命令###
[root@zyl-docker init.d]# chkconfig redisd on
2.4 ? 啟動(dòng)新版redis-7.0.9
測(cè)試
###啟動(dòng)redis
[root@zyl-docker init.d]# service redisd start
Starting Redis server…
[root@zyl-docker init.d]#
?
###redis進(jìn)程查看
[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 ?? 檢查版本及數(shù)據(jù)
###檢查步驟2.2.1中插入的數(shù)據(jù)(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 ~]#文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-478037.html
#######??升級(jí)成功??#######
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-478037.html
?? 總結(jié)—溫故知新
? 本篇由實(shí)際工作中的問(wèn)題延伸并解決,模擬生產(chǎn)環(huán)境而來(lái)
? redis代碼注入漏洞了解
? 安裝升級(jí)`redis-7.0.9`有關(guān)報(bào)錯(cuò)解決(Python3.6.5離線升級(jí)、zlib-devel-1.2.7-18.el7.x86_64 離線安裝)
? redis有關(guān)目錄詳細(xì)了解和參數(shù)配置
??【上一篇】 |
??The End?? 點(diǎn)點(diǎn)關(guān)注,收藏不迷路??
|
【下一篇】?? |
到了這里,關(guān)于【Redis升級(jí)---修復(fù)代碼注入漏洞、緩沖區(qū)錯(cuò)誤漏洞】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!