溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何借助Docker容器提權(quán)

發(fā)布時(shí)間:2021-11-25 10:03:06 來源:億速云 閱讀:588 作者:柒染 欄目:編程語言

這篇文章將為大家詳細(xì)講解有關(guān)如何借助Docker容器提權(quán),文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

免sudo使用docker

默認(rèn)情況下使用docker必須要有sudo權(quán)限,對(duì)于一臺(tái)機(jī)器多用戶使用,往往很多用戶只有普通權(quán)限,如何保證普通用戶也能順利使用Docker呢?

這一點(diǎn)想必難不到大家,只需要管理員將需要使用docker的用戶添加到docker用戶組(安裝docker后默認(rèn)會(huì)創(chuàng)建該組)中,用戶重新登錄機(jī)器即可免sudo使用docker了。

docker容器內(nèi)用戶權(quán)限不受限

我們知道,用戶創(chuàng)建一個(gè)docker容器后,容器內(nèi)默認(rèn)是root賬戶,在不需要加sudo的情況下可以任意更改容器內(nèi)的配置。

正常情況下,這種模式既可以保證一臺(tái)機(jī)器被很多普通用戶使用,通過docker容器的隔離,相互之前互不影響;也給用戶在容器內(nèi)開放了充足的權(quán)限保證用戶可以正常安裝軟件,修改容器配置等操作。

docker文件映射方便容器內(nèi)外文件共享

在我們創(chuàng)建容器的時(shí)候,docker提供了一個(gè)-v選項(xiàng),提供用戶將容器外的host目錄映射進(jìn)容器內(nèi),方便的進(jìn)行容器內(nèi)外的文件共享。

然而便利倒是有了,但潛在了風(fēng)險(xiǎn)也是可想而知。

結(jié)合上面的兩點(diǎn)便利,筆者想到一種普通用戶借助docker突破權(quán)限的限制,達(dá)到本地提權(quán)的目的。參見下圖:

如何借助Docker容器提權(quán)

提權(quán)解讀

初始情況下這里host上的test用戶是非sudo組用戶,只擁有普通權(quán)限。為了使用docker,已提前通過管理員將test用戶加入docker用戶組。

首先我們借助任意一個(gè)docker鏡像創(chuàng)建一個(gè)容器:

docker run -it --rm xxx /bin/bash    #常規(guī)使用
docker run -it --rm -v /etc:/etc xxx /bin/bash    #異常使用

這里最關(guān)鍵的一點(diǎn)就是-v選項(xiàng)的參數(shù)/etc:/etc

我們知道linux機(jī)器上的本地用戶信息主要記錄在/etc/目錄下,比如兩個(gè)常見文件/etc/passwd/etc/group兩個(gè)文件分別記錄了用戶基本屬性與用戶分組信息。

正常情況下創(chuàng)建的容器,內(nèi)部也會(huì)有/etc目錄,容器內(nèi)部的用戶信息也是記錄在該目錄。

然而我這里巧妙的將host上的/etc目錄直接映射進(jìn)容器,從而覆蓋了容器內(nèi)的/etc目錄。再加上容器內(nèi)用戶默認(rèn)是root,擁有超級(jí)管理員權(quán)限,如上圖中,通過容器內(nèi)的root用戶在容器內(nèi)新加了一個(gè)用戶test1:adduser test1,并賦予該用戶sudo權(quán)限:usermod -aG sudo test1。

至此,docker容器的作用已結(jié)束,Ctrl+D退出容器回到host,通過cat /etc/passwd查看一下本地用戶基本屬性,想必大家也能猜出這么做會(huì)出現(xiàn)什么有趣的現(xiàn)象。圖中我沒有查看,而是直接su test1,順利切換到在容器內(nèi)添加的用戶,也就是說在容器內(nèi)添加的用戶實(shí)際上也添加到了host上。通過id命令查看該用戶也被同步加入到了sudo用戶組。

其實(shí)到了這一步已經(jīng)達(dá)到了提權(quán)的目的,通過普通的test用戶借助docker容器成功創(chuàng)建了一個(gè)具有sudo權(quán)限的用戶test1。圖中只是增加了一步,借助test1將test也加入sudo用戶組,其實(shí)效果一樣。

當(dāng)然這里也可以不用增加test1用戶,直接在容器內(nèi)將test用戶加入sudo用戶組,因?yàn)榇藭r(shí)test用戶對(duì)于容器也是可見,也是可以直接操作其所屬群組,如下圖所示:

如何借助Docker容器提權(quán)

最后在host上也可以看到test已經(jīng)被加入sudo用戶組了。此時(shí)我沒有用id命令查看的一個(gè)原因是,linux的shell并沒有自動(dòng)更新當(dāng)前用戶信息,可以退出Terminal重新進(jìn)入。

注:此時(shí)如果沒有重新連接,test用戶還是無法使用sudo命令。

問題影響

在這種多用戶借助docker共用一臺(tái)機(jī)器的情況下,普通用戶可以輕松的借助docker提升為sudo用戶,從而可以進(jìn)行任意修改系統(tǒng)配置等各種惡意操作。

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

規(guī)避措施

docker創(chuàng)建容器默認(rèn)是以root身份來創(chuàng)建的,普通用戶之所以能夠創(chuàng)建容器的原因就是這個(gè)docker用戶組,所以我們應(yīng)該規(guī)避使用這種做法。對(duì)于多個(gè)用戶想使用容器,可以通過管理員集中創(chuàng)建開啟了ssh服務(wù)的容器,并提供端口映射到host上,讓普通用戶通過ssh鏈接進(jìn)入容器,這樣就可以限制普通用戶的活動(dòng)范圍在容器內(nèi),用戶的任意操作也不會(huì)擴(kuò)散到host上。

關(guān)于如何借助Docker容器提權(quán)就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI