0x00 docker簡介
docker是一個開源的應用容器引擎,開發者可以打包自己的應用到容器里面,然后遷移到其他機器的docker應用中,可以實現快速部署。如果出現的故障,可以通過鏡像,快速恢復服務。dockerde 原理是利用Linux內核虛擬機化技術(LXC),提供輕量級的虛擬化,以便隔離進程和資源。LXC不是硬件的虛擬化,而是Linux內核的級別的虛擬機化,相對於傳統的虛擬機,節省了很多硬件資源。
0x01 docker的安裝
安裝的相關的文檔可以在https://docs.docker.com/進行查找里面有各種系統版本的安裝方法,這里以debian為例,其他的類似。
- 更新apt索引
apt-get update

2.更新所需組件
apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg2 \
software-properties-common

3.增加官方 GPG key:
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

4.增加官方穩定源
add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/debian \
$(lsb_release -cs) \ stable"

5.再次更新一下apt索引,因為你剛才加入了新的源,需要更新后才能生效。
apt-get update

6.安裝docker
apt-get install docker-ce docker-ce-cli containerd.io

7.測試安裝是否成功
docker run hello-world

0x02 docker的基本操作命令
docker的相關的命令一般會在命令的開始加上docker這個詞。
1.docker search 鏡像名
可以以關鍵字的方式在docker hub上進行檢索


2.docker pull 獲取相關的鏡像

3.docker images查看相關的鏡像
其中TAG是容器的標簽,用來區分不同的容器,如果不填寫的話默認是latest,如果本地不存在latest版本則會自行下載。
IMAGE ID是鏡像的16位短ID

4.容器啟動 docker run
docker run -itd –-name 容器名稱 -p 主機端口:容器端口 鏡像名稱:標簽 /bin/bash,下面這一長串是容器的完整ID。

5.查看進程 docker ps 列出當前正在運行的容器。

6.容器的啟停
docker stop/start 容器名/ID
停止或啟動容器,若是填寫容器名則要全寫上去,如果用的是ID,這里的ID並不需要寫完整的ID或者16位短ID,只需要能與其他容器區分開即可,就算你只寫第一個字符都是可以的,只要能區分開。



7.進入容器
docker attach 容器名/ID


8.文件拷貝
docker cp 主機中的文件目錄 容器名:容器中的目錄。將文件從主機拷貝到容器中


這些docker的基本命令足夠可以進行漏洞環境的搭建了。
0x03 漏洞復現環境搭建
建立一個漏洞復現的環境,其實和建立一個應用的步驟是類似的。只是漏洞復現環境是存在漏洞的應用而已。
對環境的搭建比較方便的方式是通過dockerfile結合docker-compose
Dockerfile是由一系列命令和參數構成的腳本,這些命令應用於拉取的基礎鏡像並最終創建一個新的鏡像,通過Dockerfile我們可以創建一個你需要的鏡像,里面是包含了你要安裝的軟件,相當於是提前定制好要安裝的拓展,執行的命令等,然后一鍵執行,極大地簡化操作流程。Dockerfile由4部分組成:基礎鏡像信息、維護者信息、鏡像操作指令和容器啟動指令。
Compose是用來定義和運行一個或多個容器應用的工具。Compose是使用YML文件來定義多容器應用的,它還會用docker-compose up命令把完整的應用運行起來。
這里以前幾天剛剛公布的CVE-2020-1938為例,簡單編寫,dockerfile如下:
FROM vulhub/tomcat:8.5.19
MAINTAINER test
RUN chmod a+x /usr/local/tomcat/bin/*.sh
COPY info.war /usr/local/tomcat/webapps/info.war
EXPOSE 8080
EXPOSE 8009
FROM vulhub/tomcat:8.5.19
MAINTAINER test
RUN chmod a+x /usr/local/tomcat/bin/*.sh
COPY info.war /usr/local/tomcat/webapps/info.war
EXPOSE 8080
EXPOSE 8009
docker-comfile.yml
webapp:
build: .
ports:
- "80:8080"
-"8009:8009"
webapp:
build: .
ports:
- "80:8080"
-"8009:8009"
執行docker-compose up -d

通過映射的80,可以直接訪問搭建的docker應用

利用相關的poc進行漏洞驗證

docker在漏洞復現的環境搭建上,真的是特別方便。更多的命令細節,可以使用help及官方文檔:
https://docs.docker.com/
歡迎關注我的公眾號,等你
