banner
肥皂的小屋

肥皂的小屋

github
steam
bilibili
douban

在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
加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。