Docker 是一個(gè)開源的應(yīng)用容器引擎。
Docker 可以讓開發(fā)者打包他們的應(yīng)用以及依賴包到一個(gè)輕量級、可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上,也可以實(shí)現(xiàn)虛擬化。
Image(鏡像)
Container(容器)
Repository(倉庫)
我們可以通過安裝Docker,結(jié)合著名的漏洞環(huán)境集合Vulhub,快速的來搭建我們想要的漏洞驗(yàn)證環(huán)境。因Vulhub是基于Docker和Docker-compose來搭建的。安全人員可以極其便利地使用Docker生成一個(gè)帶有特定漏洞的容器進(jìn)行調(diào)試分析,從而減少在環(huán)境配置上的時(shí)間消耗,更專注于研究漏洞本身。
Docker的下載與安裝
不同系統(tǒng)下的docker的下載與安裝
https://www.runoob.com/docker/ubuntu-docker-install.html
我們這里以macos系統(tǒng)安裝為例,mac可以選擇brew安裝也可以直接選擇手動(dòng)安裝,這里我們選擇手動(dòng)安裝
https://docs.docker.com/desktop/install/mac-install/

跟其他軟件安裝一樣,直接按照提示即可,最后我們可以在應(yīng)用中看到Docker 圖標(biāo),點(diǎn)擊運(yùn)行即可

查看docker安裝版本命令
docker --version
Docker version 20.10.17, build 100c701
在docker開啟后,可以使用命令行方式進(jìn)行鏡像的搜索、拉取、查看等,或者容器的開啟與關(guān)閉等操作。
搜索鏡像
search命令可以搜索指定名稱和倉庫的鏡像,例如搜索tomcat的鏡像
docker search tomcat

拉取鏡像
pull 命令可以拉取指定倉庫和名稱以及標(biāo)簽的鏡像。當(dāng)未指定所獲取鏡像的tags(標(biāo)簽)時(shí),則自動(dòng)拉取latest(最新)版本的鏡像。
docker pull dordoka/tomcat

查看鏡像
images命令可以讀取已經(jīng)拉取到本地的鏡像文件,并列出鏡像所存放倉庫名、TAG標(biāo)簽、鏡像編號、創(chuàng)建時(shí)間以及鏡像大小。
docker images
刪除鏡像
rmi指令可以刪除已經(jīng)拉取到本地的鏡像,記得在刪除鏡像前需要先停止容器
docker rmi 鏡像名
生成容器
run指令可以以指定的鏡像為模板生成對應(yīng)的容器。我們這里啟動(dòng)一個(gè)Tomcat的容器,希望可以訪問它的8080端口,并在容器啟動(dòng)后在后臺(tái)默默運(yùn)行
docker run --name my_tomcat -it -d -p 8080:8080 tomcat

查看容器
docker ps
CONTAINER ID? IMAGE? ? COMMAND? ? ? ? ? ? CREATED? ? ? ? STATUS? ? ? ? PORTS? ? ? ? ? ? ? ? ? ? NAMES
987a78763b16? tomcat? ? "catalina.sh run"? 6 minutes ago? Up 6 minutes? 0.0.0.0:8080->8080/tcp? my_tomcat
停止容器
docker stop CONTAINER ID
啟動(dòng)容器
docker start CONTAINER ID
進(jìn)入容器
docker exec -it [CONTAINER ID] /bin/bash
退出容器
exit
刪除容器
docker rm [CONTAINER ID]
** Vulhub的下載與安裝**
Vulhub Github地址:https://github.com/vulhub/vulhub
下載并解壓Vulhub后,可以看到相應(yīng)的漏洞環(huán)境,我們要啟動(dòng)對應(yīng)的漏洞環(huán)境只需進(jìn)入相應(yīng)的文件夾使用Docker-compose命令啟動(dòng)即可。

啟動(dòng)漏洞環(huán)境
本次使用CVE-2020-1938為例,進(jìn)入到相對應(yīng)的文件夾后,編譯完環(huán)境后使用docker-compose up –d啟動(dòng)命令會(huì)根據(jù)該文件夾中的docker-compose.yml定義將相應(yīng)的鏡像拉取到本地,并且會(huì)自動(dòng)啟動(dòng)容器以及進(jìn)行必要的端口映射。
# 自動(dòng)化編譯環(huán)境
docker-compose build
# 啟動(dòng)整個(gè)環(huán)境
docker-compose up -d
# 刪除環(huán)境
docker-compose down -v

啟動(dòng)后訪問其8080端口即可

Maven是一個(gè)項(xiàng)目構(gòu)建工具,可以對Java項(xiàng)目進(jìn)行構(gòu)建和管理,也可以用于各種項(xiàng)目的構(gòu)建和管理。
pom.xml文件介紹
pom.xml文件使用XML文件結(jié)構(gòu),該文件用于管理源代碼、配置文件、開發(fā)者的信息和角色、問題追蹤系統(tǒng)、組織信息、項(xiàng)目授權(quán)、項(xiàng)目的url、項(xiàng)目的依賴關(guān)系等。Maven項(xiàng)目中必須包含pom.xml文件。了解pom.xml文件結(jié)構(gòu)有助于審計(jì)應(yīng)用程序中所依賴的組件和發(fā)掘隱藏風(fēng)險(xiǎn)。
pom.xml定義依賴關(guān)系
pom.xml文件中的dependencies和dependency用于定義依賴關(guān)系,dependency通過groupId、artifactId以及version來定義所依賴的項(xiàng)目。引入Fastjson
1.2.24版本組件的Maven配置信息。其中g(shù)roupId、artifactId和version共同描述了所依賴項(xiàng)目的唯一標(biāo)志。
Maven的使用
IDEA中可以在新建項(xiàng)目時(shí)選擇創(chuàng)建Maven項(xiàng)目。選擇創(chuàng)建Maven項(xiàng)目,右側(cè)窗口顯示的是Maven項(xiàng)目的模板。直接使用默認(rèn)模板并單擊“Next”按鈕,填寫Name(項(xiàng)目名稱)和Location(項(xiàng)目保存路徑)后單擊“Finish”按鈕,即可完成項(xiàng)目的創(chuàng)建。

創(chuàng)建完成的Maven項(xiàng)目中包含該pom.xml文件。pom.xml文件描述了項(xiàng)目的Maven坐標(biāo)、依賴關(guān)系、開發(fā)者需要遵循的規(guī)則、缺陷管理系統(tǒng)、組織以及l(fā)icenses,還有其他所有的項(xiàng)目相關(guān)因素。對于我們代碼審計(jì)來說,可以從pom.xml中快速的審查當(dāng)前Java應(yīng)用程序中是否使用了存在安全隱患的組建,以及快速的搭建特定版本的漏洞環(huán)境。

這里以搭建Fastjson 1.2.24之前版本的反序列化漏洞環(huán)境,需要引入版本小于1.2.24的Fastjson組件為例,引入Fastjson相應(yīng)版本后右鍵單擊pom.xml文件選擇“Maven”選項(xiàng),進(jìn)行組件的自動(dòng)獲取。

關(guān)注至察助安 ,專注網(wǎng)絡(luò)安全優(yōu)質(zhì)知識(shí)分享,無優(yōu)質(zhì),不分享。