Docker是如何构建漏洞环境的?看这一篇就够了!

2018-07-13 73555人围观 企业资讯

使用Docker构建漏洞环境

开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题;

运维人员利用 Docker 可以在隔离容器中并行运行、管理应用,获得更好的计算密度;

企业利用 Docker 可以构建敏捷的软件交付管道,更快、更安全、更可靠的为Linux和Windows Server应用发布新功能;

同时,Docker也可以用来快速重现一些漏洞实验环境。

本期“安仔课堂”,ISEC实验室的何老师,为大家演示Docker是如何构建漏洞环境的。

安装Docker

Windows

①Docker for Windows

前提需求:

Windows 10 pro x64

Microsoft Hyper-V

下载以下安装包安装即可: 

image.png

需要注意的是,Hyper-V开启后“vmware workstation”将无法正常运行,会出现以下错误信息。

 image.png

②Docker Toolbox

“Docker Toolbox”提供了一种在较旧的Windows系统上使用Docker的方法,它们不符合“Docker for Windows”应用程序的最低系统要求。

 

“Docker Toolbox”包括以下Docker工具:

Docker CLI客户端:运行“Docker Engine”来创建图像和容器

Docker Machine:可从Windows终端运行“Docker Engine”命令

Docker Compose:运行该“Docker-Compose”命令

Kitematic、Docker GUI

为Docker命令行环境预配置了“Docker QuickStart shell”

Oracle VM VirtualBox

下载以下安装包安装即可: 

image.png

安装“Docker Toolbox”时将会安装其他几个帮助程序:

适用于Windows的“Docker Client”

“Docker Toolbox”管理工具和ISO

Oracle VM VirtualBox

Git MSYS-git UNIX工具

如果您安装了以前版本的“VirtualBox”,请勿使用“Docker Toolbox”安装程序重新安装,提示安装时取消选择即可。安装完成后打开“Docker Quickstart Terminal”开始设置环境,待出现“$”后即可使用。

Ubuntu

使用软件仓库在新的主机上首次安装“Docker CE”前,需要设置Docker软件仓库,然后从此软件仓库安装和更新Docker。

①更新“apt”软件包索引

image.png

②安装软件包,以允许“apt”通过“HTTPS”使用软件仓库

image.png

③添加Docker的官方GPG密钥

image.png

④设置“stable”软件仓库

image.png

⑤安装“Docker CE”

image.png

Centos 7 64位

①安装所需的软件包

image.png

②设置“stable”软件仓库

image.png

③安装最新版本“Doucker CE”

image.pngimage.png

④启动Docker

image.png

Mac

下载以下安装包,双击打开并拖拽到应用文件夹即可 

image.png

安装完成后在命令行输入“docker run hello-world”,得到: 

image.png

了解Docker基本内容

镜像

Docker镜像可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了为运行准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像是只读的,构建之后就不会改变。

容器

在镜像的基础上增加一个读写层,用户可在读写层进行操作。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。

镜像仓库

存储用户、官方上传镜像的仓库

我们想要使用Docker搭建漏洞环境,其实就是要构建漏洞环境镜像,而Docker镜像构建有两种方式:

①容器构建

运行一个实例进行操作,通过“docker commit 容器id 镜像名字”生成一个新的镜像,其他使用者将不知道什么文件是经过修改的。

②“Dockerfile”构建

通过编写一个“Dockerfile”文件,在“Dockerfile”文件路径使用“docker build -t 镜像名称 .”生成一个新的镜像,其他使用者将知道如何得到此镜象。

利用Docker构建靶场演示环境

构建“S2-045”漏洞镜像

接下来将会使用“Dockerfile”的方式去构建“S2-045”漏洞镜像。

下载一个“S2-045”的测试环境:

image.png

然后创建一个“Dockerfile”文件,写入以下内容:

image.png

说明:

image.png

RUN和CMD的区别:

RUN:构建镜像时运行的指令

CMD:运行容器时运行的指令

使用“docker build -t s2-045 .”命令构建“s2-045”镜像:

image.png

执行”docker images”,“s2-045:latest”在镜像列表出现,同时还出现了基础镜像“tomcat:8.0-gre8”。

image.png

执行“docker run -d -p 80:8080 s2-045“命令运行刚刚构建的镜像,运行后会返回一个容器ID。

“-d”:在后台运行容器并输出容器id 

“-p”:把容器的端口“8080”映射到我们的物理机上“80” 

“s2-045”:我们刚构建的镜像名

image.png

执行”docker stats“查看运行状态,根据“CONTAINER ID”找到刚启动的容器。

image.png

可以从浏览器访问环境,访问地址如下:

image.png

接下来使用“python2”运行“s2-045”的“exp”查看能否成功利用。

“exp”于以下地址获取:

image.png

image.png

上图可见,已成功返回期望执行命令的结果,那么这个漏洞镜像就完成了。

目前互联网上存在两个比较出名的基于Docker的漏洞环境仓库,分别为“Vulhub”和“Vulapps”。

Vulhub

“Vulhub”是一个面向大众的开源漏洞靶场,无需Docker知识,简单执行两条命令即可编译、运行一个完整的漏洞靶场镜像。

image.png

“Vulhub”是采用“docker-compose”程序去编译、运行环境,只需要简单的2个命令即可轻松搞定。

# 自动化编译环境:“docker-compose build”

# 启动整个环境:“docker-compose up -d”

#删除整个环境:“docker-compose down”

得益于“docker-compose.yml”文件,可使用统一命令去编译和运行。

image.png

在文件中已经配置好了Docker运行所需要的参数(ports:- “8080:80″)。

VulApps

收集各种漏洞环境,为方便使用,统一采用“Dockerfile”形式,同时也收集了安全工具环境。

image.png

image.png

可以看到在项目仓库里面提供了“s2-037”的“Dockerfile”文件,需要我们本地构建,然后输入参数去运行。

相关推荐
取消
Loading...

最近文章

文章目录

    特别推荐

    推荐关注

    官方公众号

    聚焦企业安全

    填写个人信息

    姓名
    电话
    邮箱
    公司
    行业
    职位
    css.php