漏洞說明:Redis 默認情況下,會系結在 0.0.0.0:6379,如果沒有進行采用相關的策略,比如添加防火墻規則避免其他非信任來源 ip 訪問等,如果在沒有設定密碼認證(一般為空)的情況下,會導致任意用戶在可以訪問目標服務器的情況下未授權訪問 Redis 以及讀取 Redis 的資料,攻擊者在未授權訪問 Redis 的情況下,利用 Redis 自身的提供的config 命令,可以進行寫檔案操作,攻擊者成功將自己的ssh公鑰寫入目標服務器的 /root/.ssh 檔案夾的authotrized_keys 檔案中,可以使用對應私鑰直接使用ssh服務登錄目標服務器,
1. 在攻擊機使用nmap發現6379埠
2.嘗試用公鑰替換利用未授權漏洞
(1)攻擊機生成密鑰
ssh-keygen -t rsa

(2)查看并復制公鑰
cat ~/.ssh/id_rsa.pub
(3)連接靶機redis
nc 172.16.250.128 6379

其中,info :查看服務器、客戶端、CPU、記憶體等資訊
config set dir: 設定redis目錄 config get dir: 獲取默認redis目錄
config set dbfilename “***keys” 設定rdb名稱,獲取使用 config get dbfilename
在靶機上保存公鑰

3.利用公鑰登錄靶機ssh,訪問成功
4.漏洞防護措施
(1)限制redis訪問:修改redis.conf檔案
把# bind 127.0.0.1前面的 注釋#號去掉,然后把127.0.0.1改成允許訪問你的redis服務器的ip地址,表示只允許該ip進行訪問,這種情況下,我們在啟動redis服務器的時候不能再用:redis-server而改為:redis-server path/redis.conf 即在啟動的時候指定需要加載的組態檔,
(2)增加redis訪問密碼
在redis.conf組態檔中找到requirepass 配置項,取消#注釋符,在requirepass 后面添加設定的密碼,設定密碼以后發現可以登陸,但是無法執行命令,
1)啟動redis客戶端,并連接服務器:redis-cli -h IP地址 -p 埠號
輸出服務器中的所有key:keys *
報錯:(error) ERR operation not permitted
使用授權命令進行授權,就不報錯了:auth youpassword
2)在連接服務器的時候就可以指定登錄密碼,避免單獨輸入上面授權命令:redis-cli -h IP地址 -p 埠號 -a 密碼
3)在組態檔redis.conf中配置驗證密碼以外,也可以在已經啟動的redis服務器通過命令列設定密碼,但這種方式是臨時的,當服務器重啟了后,密碼必須重設,命令列設定密碼方式:config set requirepass 你的密碼
4)不知道當前redis服務器是否有設定驗證密碼,或者忘記密碼,可以通過命令列輸入命令查看密碼:config get requirepass
5)如果redis服務端沒有配置密碼,會得到nil,而如果配置了密碼,但是redis客戶端連接redis服務端時,沒有用密碼登錄驗證,會提示:operation not permitted,這時候可以用命令:auth yourpassword 進行驗證密碼,再執行 config set requirepass,就會顯示yourpassword
(3)修改默認埠:
修改redis.conf檔案中默認埠 port 6379
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/333576.html
標籤:其他
上一篇:青衿之志,履踐致遠
