docker 利用特權模式逃逸并拿下主機
在溯源反制過程中,會經常遇到一些有趣的玩法,這里給大家分享一種docker在特權模式下逃逸,并拿下主機權限的玩法。
前言
在一次溯源反制過程中,發現了一個主機,經過資產收集之后,發現有如下幾個資產。

其中9000是一個Web服務,于是我訪問查看了一下。
發現其為Portainer后臺,且存在弱口令登錄。

一般看到這種登錄頁面,習慣性的輸入admin/admin,admin/password,admin/123456。然后就試出來一個進去了。
Portainer
Portainer是Docker的圖形化管理工具,提供狀態顯示面板、應用模板快速部署、容器鏡像網絡數據卷的基本操作(包括上傳下載鏡像,創建容器等操作)、事件日志顯示、容器控制臺操作、Swarm集群和服務等集中管理和操作、登錄用戶管理和控制等功能。功能十分全面,基本能滿足中小型單位對容器管理的全部需求。
這是我在溯源過程中第一次碰到這個后臺,我簡單瀏覽了一下
打開后臺就是這樣

這里有很多創建好的docker容器。還可以自定義下載鏡像,并構建容器。
利用
我想到如果在docker容器啟動中加上--privileged參數即特權模式,就可以磁盤掛載利用了。進行掛載后,可以進行對本地宿主機的文件替換比如寫入公鑰getshell, 想到這一點,我點擊新建容器。選擇了nignx:latest 鏡像

注意, 開啟特權模式一定要勾選下面的選項

將此選項勾選之后,就會開啟特權模式了。

創建好容器之后,點擊這里,進入容器控制臺。
現在我們需要掛載磁盤到容器的目錄上。這一點和容器數據卷設置不同,這一步是真實的掛載磁盤。
通過df -h 命令查看磁盤,新建文件夾/abcd,然后將宿主機的文件系統掛載到docker容器中的/abcd 目錄。

然后/abcd目錄就是宿主機的真實主機文件了,我們正常在root下寫入公鑰文件。

最后可以直接用ssh登錄鏈接了

總結
這篇是我在溯源反制中真實遇到的一個情況,舉一反三,如果是自己部署docker環境的話,切記不要使用特權模式!