10.22 黑客“實戰”內容之Redis未授權訪問漏洞復現

黑客"實戰"內容之Redis未授權訪問漏洞復現

Redis是一種開源的,內存中的數據結構存儲系統,可用作數據庫,消息代理或緩存。由於它是在在受信任的環境中訪問,因此不應在Internet上公開。但是,一些Redis服務綁定到公共接口,甚至沒有密碼身份驗證保護。

在某些情況下,如果Redis使用root帳戶運行,攻擊者可以將SSH公鑰文件寫入root帳戶,直接通過SSH登錄到受害服務器。這會允許黑客獲得服務器權限,刪除或竊取數據,甚至導致加密勒索,嚴重危及正常的業務服務

在正式開始介紹復現過程前,先說明一下我復現的是最嚴重的漏洞利用情況即以root身份登錄redis服務寫入ssh公鑰實現使用ssh免密登錄受害主機。現在先說明一下SSH免密登錄的原理(已經瞭解的童靴們可以直接跳過hhh):

SSH提供兩種登錄驗證方式,一種是口令驗證也就是賬號密碼登錄,另一種是密鑰驗證也就是我們想要的免密登錄了,這裡我只簡單說一下密鑰驗證的原理。

所謂密鑰驗證,其實就是一種基於公鑰密碼的認證,使用公鑰加密、私鑰解密,其中公鑰是可以公開的,放在服務器端,你可以把同一個公鑰放在所有你想SSH遠程登錄的服務器中,而私鑰是保密的只有你自己知道,公鑰加密的消息只有私鑰才能解密,大體過程如下:

(1)客戶端生成私鑰和公鑰,並把公鑰拷貝給服務器端;

(2)客戶端發起登錄請求,發送自己的相關信息;

(3)服務器端根據客戶端發來的信息查找是否存有該客戶端的公鑰,若沒有拒絕登錄,若有則生成一段隨機數使用該公鑰加密後發送給客戶端;

(4)客戶端收到服務器發來的加密後的消息後使用私鑰解密,並把解密後的結果發給服務器用於驗證;

(5)服務器收到客戶端發來的解密結果,與自己剛才生成的隨機數比對,若一樣則允許登錄,不一樣則拒絕登錄。

下面我們開始進行漏洞環境的搭建:

從官網下載源碼的壓縮包,程序:

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

黑客“實戰”內容之Redis未授權訪問漏洞復現

解壓:

tar xzf redis-3.2.11.tar.gz

進入解壓後的目錄:

cd redis-3.2.11

執行:

Make

執行完畢後,進入src目錄:

cd src

將redis-server和redis-cli拷貝到/usr/bin目錄下(這樣啟動redis-server和redis-cli就不用每次都進入安裝目錄了)

cp redis-server /usr/bin

cp redis-cli /usr/bin

黑客“實戰”內容之Redis未授權訪問漏洞復現

返回目錄redis-3.2.11,將redis.conf拷貝到/etc/目錄下

Cd

Cp redis.conf /etc/

黑客“實戰”內容之Redis未授權訪問漏洞復現

編輯etc中的redis配置文件redis.conf,如下圖所示

Vim redis.conf

黑客“實戰”內容之Redis未授權訪問漏洞復現

這樣可以去掉ip綁定,允許除本地外的主機遠程登錄redis服務

關閉保護模式,允許遠程連接redis服務

黑客“實戰”內容之Redis未授權訪問漏洞復現

使用/etc/目錄下的reids.conf文件中的配置啟動redis服務

redis-server /etc/redis.conf

安裝ssh服務

使用systemctl start sshd命令啟動ssh服務。

(三)複製虛擬機,一個作為靶機,一個作為攻擊端

至此漏洞環境便已經搭建完畢,此時的redis服務是可以以root用戶身份遠程免密碼登錄的。

查看兩機器的ip

黑客“實戰”內容之Redis未授權訪問漏洞復現

黑客“實戰”內容之Redis未授權訪問漏洞復現

虛擬機A(192.168.0.146)為靶機,虛擬機B(192.168.0.147)為攻擊端

在A中開啟redis服務:redis-server /etc/redis.conf

在主機A中執行mkdir /root/.ssh命令,創建ssh公鑰存放目錄

在B中生成ssh公鑰和私鑰,密碼設置為空

黑客“實戰”內容之Redis未授權訪問漏洞復現

進入.ssh目錄:cd .ssh/,將生成的公鑰保存到1.txt

黑客“實戰”內容之Redis未授權訪問漏洞復現

將1.txt寫入redis

黑客“實戰”內容之Redis未授權訪問漏洞復現

遠程登錄主機A的redis服務:redis-cli -h 192.168.0.146 並使用CONFIG GET dir命令得到redis備份的路徑:

黑客“實戰”內容之Redis未授權訪問漏洞復現

更改redis備份路徑為ssh公鑰存放目錄(一般默認為/root/.ssh)

黑客“實戰”內容之Redis未授權訪問漏洞復現

設置上傳公鑰的備份文件名字為authorized_keys:

黑客“實戰”內容之Redis未授權訪問漏洞復現

開啟主機A和主機B的ssh服務(Fedor默認ssh服務關閉),命令為systemctl start sshd.serveice:

黑客“實戰”內容之Redis未授權訪問漏洞復現

黑客“實戰”內容之Redis未授權訪問漏洞復現

在主機B使用ssh免密登錄主機A:ssh -i id_rsa [email protected],成功登錄:

黑客“實戰”內容之Redis未授權訪問漏洞復現

我們就成功利用redis未授權訪問漏洞實現了ssh免密登錄目標服務器,接下來就可以使用ssh服務來進行下一步的滲透工作


分享到:


相關文章: