banner
肥皂的小屋

肥皂的小屋

github
steam
bilibili
douban
tg_channel

在Ubuntu中安裝docker快速搭建測試環境

為啥要用 docker?#

在實際學習中,經常需要模擬不同的漏洞環境,而使用公網的實例的話,多多少少又存在一些風險,因此能搭建一個本地的模擬環境去測試漏洞是一個不錯的方案。Docker 是近兩年來十分流行的開源容器引擎,因此也出現了很多使用 Docker 容器搭建的靶機環境供新手學習和使用。

寫這篇文章的原因:我一直知道 Docker 的強大,但是需要一個例子來開始

這兩篇公眾號文章:

是我下定決心安裝 Docker 的動力

為什麼是在 Ubuntu 中?#

我們常見的測試環境有 Win10、Kali、Win7、Win2008、Win2003 等,再來一個 Linux 環境最合適的就是 Ubuntu 了

我們大部分人常用的環境是 Win10 (說 MacOS 的坐下!),那在 Win10 安裝 Docker 怎麼樣呢?

Docker for Widows 官方文檔:https://docs.docker.com/docker-for-windows/install/ 裡面說了

Win10 家庭版是不支持 Docker for Windows 的,Win10 其他版本,常見的比如專業版 (我自己也裝的這個) 需要在 BIOS 中開啟 Virtualization 虛擬化功能,我自己試過很多次不能用 Docker for windows,開啟 Hyper-V 的話連接校園網的軟件會報錯 “不能在虛擬環境中運行軟件”

那不支持安裝環境的機器只能使用 Docker Toolbox,文檔地址:https://docs.docker.com/toolbox/toolbox_install_windows/

Docker Toolbox 是需要配合 virtualbox 使用的,然後我為什麼用 Ubuntu 去安裝 docker 呢?

  • 需要一個輕量級桌面 Linux 靶機
  • 虛擬機可以經常恢復快照 (雖然 docker 的存在能大幅消減快照的繁瑣)
  • 就想用!(傲嬌臉)

安裝 docker#

安裝#

我這裡由於比較懶,直接 su root 切換到了 root 賬戶下進行,所以如果命令執行異常的,加上 sudo 在前面

  • 安裝所需要的包 (這裡默認你的 ubuntu 已經配置過國內 apt 鏡像):apt install docker.io
  • 安裝完成查看版本信息:docker -v
  • 添加權限(可選):將當前用戶添加到 docker 用戶組,可以不用 sudo 運行 docker(需要重新登錄):sudo usermod -aG docker $USER

配置鏡像加速#

和 Git 一樣,默認的鏡像由於伺服器都在國外,速度很慢,所以需要換國內鏡像

最新版本的 docker 的配置文件是 /etc/docker/daemon.json,默認安裝完 docker 時是不存在的,使用 vim 打開則自動創建

vim /etc/docker/daemon.json,將以下代碼粘貼進去:

{
  "registry-mirrors": ["http://example.m.daocloud.io"]
}

這個鏡像地址有如下推薦:

image

image

打了馬賽克的位置就是加速器地址

速度推薦:自己拉取了一個 wordpress 感覺一下,阿里雲和 DaoCloud 的速度差不多,其他的稍差,個人推薦使用 DaoCloud

然後重啟 docker 服務:service docker restart 就可以了,我們可以拉一個 wordpress 測試一下:docker pull wordpress

搭建 wordpress 示例測試環境#

可以使用官方出品的 Docker 鏡像:docker pull wpscanteam/vulnerablewordpress

image

pull 完畢後運行,轉發 80 和 3306 端口。

docker run --name vulnerablewordpress -d -p 80:80 -p 3306:3306 wpscanteam/vulnerablewordpress

image

打開 ip 即可進入 wordpress 安裝界面:

image

也可以自己用 wordpress 和 mysql5.6 搭建順便學習下指令,教程如下:

1. 配置好鏡像地址後,我們拉取 wordpress 鏡像 docker pull wordpress 和 mysql5.6 鏡像 docker pull mysql:5.6

拉取示意圖:

image

2. 創建 mysql 容器

docker run --name testmysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=a123456 -d mysql:5.6
#參數解釋:
#MYSQL_ROOT_PASSWORD=a123456 設置mysql的root密碼是a123456
#testmysql 設置容器名稱為testmysql 這個名字以後會用到要記住,生成後會返回一個id

image

3. 登錄到 mysql 創建數據庫

docker exec -it testmysql mysql -uroot -p
#此處的 testmysql 是之前mysql容器的名字

輸入之前設置的 root 密碼 (a123456) 登錄到數據庫:

image

4. 創建數據庫

create database wordpress;

按 ctrl+D 或者輸入 quit; 退出

image

5. 創建 wordpress 容器,和創建 mysql 容器類似

docker run --name testwordpress --link testmysql:db -p 80:80 -d wordpress:latest
#參數解釋:
#80:80 將容器的80端口和主機的80端口互通
#testmysql:db 將wordpress容器連接上mysql容器並起別名為db

image

6. 在瀏覽器打開主機的 ip, 就能跳轉到 wordpress 的安裝界面了:

image

  • 用戶名 (mysql 的 root 用戶)
  • 密碼 (還記得設置的 mysql 的 root 密碼嗎?)
  • 數據庫主機(還記得剛剛設置的別名嗎?)

image

其他默認,就安裝完成了:

image

一個滲透測試環境就搭建完成了

比較文章開頭提到的文章中下載 wordpress 鏡像,用 virtualbox 搭建是不是方便許多?

常用 docker 命令#

  • docker version:查看版本號
  • docker run hello-world:載入測試鏡像測試
  • docker images:查看當前有哪些鏡像
  • docker ps:查看所有正在運行容器
  • docker ps -a:查看所有容器
  • docker stop containerId (容器的 ID):關閉 ID 為 xxx 的容器
  • docker rm containerId (容器的 ID):刪除 ID 為 xxx 的容器
  • 鏡像刪除:
  • 停止所有的 container,這樣才能夠刪除其中的 images:docker stop $(docker ps -a -q)
  • 如果想要刪除所有 container 的話再加一個指令:docker rm $(docker ps -a -q)
  • 刪除 images,通過 image 的 id 來指定刪除誰:docker rmi
  • 想要刪除 untagged images,也就是那些 id 為的 image 的話可以用:docker rmi $(docker images | grep "^" | awk "{print $3}")
  • 要刪除全部 image 的話:docker rmi $(docker images -q)
  • 設置容器的端口映射:docker run [-P][-p]
  • -P: 對容器所有的端口進行映射
  • -p: 指定映射哪些容器的端口
  • 幾個例子:
  • containerPort 只指定容器的端口,宿主機的端口隨機映射:docker run -p 80 -i -t /bin/bash
  • hostPort 同時制定宿主機端口以及容器端口:docker run -p 8080:80 -i -t /bin/bash0
  • ip 指定 ip 和容器的端口:docker run -p 0.0.0.0:80 -i -t /bin/bash
  • ip:hostPort 同時制定 ip 以及宿主機端口以及容器端口:docker run -p 0.0.0.0:8080:80 -i -t /bin/bash
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。