當前位置:
首頁 > 最新 > 普通用戶藉助docker容器提權思路分享

普通用戶藉助docker容器提權思路分享

隨著docker越來越流行,很多公司內部linux機器上docker成了標配。


免sudo使用docker

默認情況下使用docker必須要有sudo許可權,對於一台機器多用戶使用,往往很多用戶只有普通許可權,如何保證普通用戶也能順利使用Docker呢?

這一點想必難不到大家,只需要管理員將需要使用docker的用戶(安裝docker後默認會創建該組)中,用戶重新登錄機器即可使用docker了。


我們知道,用戶創建一個docker容器後,容器內默認是root賬戶,在不需要加sudo的情況下可以任意更改容器內的配置。

正常情況下,這種模式既可以保證一台機器被很多普通用戶使用,通過docker容器的隔離,相互之前互不影響;也給用戶在容器內開放了充足的許可權保證用戶可以正常安裝軟體,修改容器配置等操作。


在我們創建容器的時候,docker提供了一個-v選項,提供用戶將容器外的host目錄映射進容器內,方便的進行容器內外的文件共享。

然而便利倒是有了,但潛在了風險也是可想而知。

結合上面的兩點便利,筆者想到一種普通用戶藉助docker突破許可權的限制,達到本地提權的目的。參見下圖:


初始情況下這裡host上的用戶是非sudo組用戶,只擁有普通許可權。為了使用docker,已提前通過管理員將test用戶加入docker用戶組。

首先我們藉助任意一個docker鏡像創建一個容器:

這裡最關鍵的一點就是-v選項的參數/etc:/etc。

我們知道linux機器上的本地用戶信息主要記錄在目錄下,比如兩個常見文件和兩個文件分別記錄了用戶基本屬性與用戶分組信息。

正常情況下創建的容器,內部也會有/etc目錄,容器內部的用戶信息也是記錄在該目錄。

然而我這裡巧妙的將host上的/etc目錄直接映射進容器,從而覆蓋了容器內的/etc目錄。再加上容器內用戶默認是root,擁有超級管理員許可權,如上圖中,通過容器內的root用戶在容器內新加了一個用戶test1:,並賦予該用戶sudo許可權:。

至此,docker容器的作用已結束,Ctrl+D退出容器回到host,通過查看一下本地用戶基本屬性,想必大家也能猜出這麼做會出現什麼有趣的現象。圖中我沒有查看,而是直接,順利切換到在容器內添加的用戶,也就是說在容器內添加的用戶實際上也添加到了host上。通過命令查看該用戶也被同步加入到了sudo用戶組。

其實到了這一步已經達到了提權的目的,通過普通的test用戶藉助docker容器成功創建了一個具有sudo許可權的用戶test1。圖中只是增加了一步,藉助test1將test也加入sudo用戶組,其實效果一樣。

當然這裡也可以不用增加test1用戶,直接在容器內將test用戶加入sudo用戶組,因為此時test用戶對於容器也是可見,也是可以直接操作其所屬群組,如下圖所示:

最後在host上也可以看到test已經被加入sudo用戶組了。此時我沒有用id命令查看的一個原因是,linux的shell並沒有自動更新當前用戶信息,可以退出Terminal重新進入。

在這種多用戶藉助docker共用一台機器的情況下,普通用戶可以輕鬆的藉助docker提升為sudo用戶,從而可以進行任意修改系統配置等各種惡意操作。

以上是本地用戶的破壞還不是很明顯,畢竟是公司內部用戶大多不會進行惡意操作。然而,很多情況下普通用戶為了方便,用戶密碼往往設置得很簡單,如果攻擊者通過其他途徑暴力破解普通用戶弱口令,就可以很輕鬆得提示為管理員從事不可限制的惡意操作,這也大大降低了攻擊者的攻擊難度。


docker創建容器默認是以root身份來創建的,普通用戶之所以能夠創建容器的原因就是這個docker用戶組,所以我們應該規避使用這種做法。對於多個用戶想使用容器,可以通過管理員集中創建開啟了ssh服務的容器,並提供埠映射到host上,讓普通用戶通過ssh鏈接進入容器,這樣就可以限制普通用戶的活動範圍在容器內,用戶的任意操作也不會擴散到host上。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 瘋貓網路 的精彩文章:

基於Metasploit編寫終端檢測程序
黑客是如何監視你的手機的?

TAG:瘋貓網路 |