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

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

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

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

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

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

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

安装Docker

一、Windows

①Docker for Windows

前提需求:

Windows 10 pro x64

Microsoft Hyper-V

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

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

②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

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

安装“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”软件包索引

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

③添加Docker的官方GPG密钥

④设置“stable”软件仓库

⑤安装“Docker CE”

三、Centos 7 64位

①安装所需的软件包

②设置“stable”软件仓库

③安装最新版本“Doucker CE”

④启动Docker

四、Mac

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

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

了解Docker基本内容

一、镜像

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

二、容器

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

三、镜像仓库

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

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

①容器构建

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

②“Dockerfile”构建

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

利用Docker构建靶场演示环境

一、构建“S2-045”漏洞镜像

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

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

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

说明:

RUN和CMD的区别:

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

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

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

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

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

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

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

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

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

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

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

“exp”于以下地址获取:

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

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

Vulhub

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

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

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

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

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

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

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

VulApps

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

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

安胜作为国内领先的网络安全类产品及服务提供商,秉承“创新为安,服务致胜”的经营理念,专注于网络安全类产品的生产与服务;以“研发+服务+销售”的经营模式,“装备+平台+服务”的产品体系,在技术研究、研发创新、产品化等方面已形成一套完整的流程化体系,为广大用户提供量体裁衣的综合解决方案!

ISEC实验室作为公司新技术和新产品的预研基地,秉承“我的安全,我做主”的理念,专注于网络安全领域前沿技术研究,提供网络安全培训、应急响应、安全检测等服务。

2018年

承担全国两会网络安保工作;

承担青岛上合峰会网络安保工作。

2017年

承担全国两会网络安保工作;

承担金砖“厦门会晤”网络安保工作;

承担北京“一带一路”国际合作高峰论坛网络安保工作;

承担中国共产党第十九次全国代表大会网络安保工作;

承担第四届世界互联网大会网络安保工作。

2016年

承担全国两会网络安保工作;

为贵阳大数据与网络安全攻防演练提供技术支持;

承担G20峰会网络安保工作;

承担第三届世界互联网大会网络安保工作。

2015年

承担第二届世界互联网大会网络安保工作。

不忘初心、砥砺前行;未来,我们将继续坚守、不懈追求,为国家网络安全事业保驾护航!




免责声明:

本站系本网编辑转载,会尽可能注明出处,但不排除无法注明来源的情况,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本网联系, 来信: liujun@soft6.com 我们将在收到邮件后第一时间删除内容!

[声明]本站文章版权归原作者所有,内容为作者个人观点,不代表本网站的观点和对其真实性负责,本站拥有对此声明的最终解释权。