安基網 首頁 安全 攻防案例 查看內容

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

2019-10-23 09:39| 投稿: xiaotiger |來自: 互聯網


免責聲明:本站系公益性非盈利IT技術普及網,本文由投稿者轉載自互聯網的公開文章,文末均已注明出處,其內容和圖片版權歸原網站或作者所有,文中所述不代表本站觀點,若有無意侵權或轉載不當之處請從網站右下角聯系我們處理,謝謝合作!

摘要: Redis是一種開源的,內存中的數據結構存儲系統,可用作數據庫,消息代理或緩存。由于它是在在受信任的環境中訪問,因此不應在Internet上公開。但是,一些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

解壓:

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-3.2.11,將redis.conf拷貝到/etc/目錄下

Cd

Cp redis.conf /etc/

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

Vim redis.conf

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

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

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

redis-server /etc/redis.conf

安裝ssh服務

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

(三)復制虛擬機,一個作為靶機,一個作為攻擊端

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

查看兩機器的ip

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

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

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

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

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

將1.txt寫入redis

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

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

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

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

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

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



小編推薦:欲學習電腦技術、系統維護、網絡管理、編程開發和安全攻防等高端IT技術,請 點擊這里 注冊賬號,公開課頻道價值萬元IT培訓教程免費學,讓您少走彎路、事半功倍,好工作升職加薪!

本文出自:https://www.toutiao.com/a6750563768033346060/

免責聲明:本站系公益性非盈利IT技術普及網,本文由投稿者轉載自互聯網的公開文章,文末均已注明出處,其內容和圖片版權歸原網站或作者所有,文中所述不代表本站觀點,若有無意侵權或轉載不當之處請從網站右下角聯系我們處理,謝謝合作!


鮮花

握手

雷人

路過

雞蛋

相關閱讀

最新評論

 最新
返回頂部
湖北快3 购买技巧