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

安胜ISEC实验室 美亚柏科 2018-07-13

使用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”文件,需要我们本地构建,然后输入参数去运行。




互了个动

小伙伴们,

本期内容到这里就结束啦,

你get到了吗? 


欢迎大家于文末留言

分享你的宝贵见解、

疑问、补充~


与ISEC实验室大神互动的机会来啦!

速速行动起来撒!


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


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


2018年

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

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

2017年

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

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

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

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

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

2016年

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

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

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

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

2015年

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


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




    本站仅按申请收录文章,版权归原作者所有
    如若侵权,请联系本站删除
    觉得不错,分享给更多人看到