从镜像开始搭建Web-docker靶场

Posted hunpi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从镜像开始搭建Web-docker靶场相关的知识,希望对你有一定的参考价值。

下载配置虚拟机

安装镜像

  搜索“ubuntu镜像官方”,找到网站http://releases.ubuntu.com/releases/。
在发布版本中可以看到,Ubuntu/v12.0.4最近一次修改是在2019年3月。

  Ubuntu的发行,一年分别在4月和10月发布版本,比如12.04表示2012年4月发布,12.10版本则是在2012年10月发布。出于普遍性的考量,选择下载Ubuntu/18.04.5版本。(镜像大小约为2.0G)

  新建虚拟机,选择iso文件。

配置虚拟机

  (1)更新软件包管理工具:apt-get update

  (2)安装VMTools,方便虚拟机与物理机的交互。
  右键选择虚拟机“VMTools安装”,桌面找到VMTools文件夹。

	解压t命令:ar -xzvf VmwareToolsxxx.tar.gz
	
	报错"无法mkdir:只读文件系统"。
	尝试解决1:赋值chmod 777 VMware Tools,解压仍然报错"无法mkdir:只读文件系统"。
	尝试解决2:查询资料发现要提取到其它目录执行。
提取到/home目录:"cp VmwareToolsxxx.tar.gz /home",执行解压命令,解压成功。
	(mv会提示无法删除VmwareToolsxxx.tar.gz)

  进入解压得到的vmware-tools-distrib目录,执行安装命令./vmware-install.pl,一路回车即可。重启测试,复制终端字符到物理机,测试成功。

  (3)安装vim编辑器:apt-get install vim

  (4)测试Ubuntu自带工具:wget存在,curl不存在。


Ubuntu安装网站环境

  网站环境:php+Ngnix+mysql

  第一次安装:通过wget下载的.tar.gz,但编译需要一些必要的依赖,很烦。
  重新安装:全部参考《Ubuntu 18.04上nginx+php环境搭建》,2019-05
https://blog.csdn.net/qq_36290650/article/details/90411807

  值得一提的是,通过参考文章中的安装方式,Web根目录是/var/www/html
通过php.tar.gz压缩包安装时,Web根目录往往是自定义目录。
由于安装Nginx之后,会有/usr/share/nginx/html,所以算是可能的根目录之一。
部分人喜欢把根目录放在/home/wwwroot/default,Nginx的根目录需要收集一下。
在这里插入图片描述


1.将虚拟机打包成docker镜像-过大

  (1)Ubuntu18.04.5安装docker

安装 apt 依赖包,用于通过HTTPS来获取仓库
sudo apt-get install \\
   apt-transport-https \\
   ca-certificates \\
   curl \\
   gnupg-agent \\
   software-properties-common


	添加 Docker 的官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

	设置稳定版仓库
sudo add-apt-repository \\
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \\
  $(lsb_release -cs) \\
  stable"

	安装 Docker-ce
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

	测试运行
sudo docker run hello-world

  (2)把虚拟机打包成Docker镜像。
  问题:有一台虚拟机,想要将其转换成一个Docker镜像。
  解决方案:为自己的虚拟机文件系统创建一个TAR文件。可以使用qemu-nbd、或通过ssh执行tar命令、或者其他方法,然后在Dockerfile里使用ADD命令加入TAR文件以创建自己的镜像。

  选择转换方式:从一个正在运行的系统创建出TAR文件。在登陆到系统后可以轻松实现这一点。
  可能存在的问题:这种方式存在“状态中断的风险”,用户复制出来的文件可能存在状态不一致的情况,并且可能会在试用制作出的新的Docker镜像时会遇到一些莫名其妙的问题。如果只能这样做的话,那就尽可能多地停掉一些应用和服务。

	/etc/init.d/nginx stop
	/etc/init.d/mysql stop
	/etc/init.d/php7.2-fpm stop
	
	cd /
	sudo tar cf /img.tar --exclude=/img.tar --one-file-system /

  一旦拿到了文件系统的TAR,就可以将其加到镜像里,这一过程再简单不过,它是由一个两行代码的Dockerfile组成的。
  在一个空目录下,新建一个名为 Dockerfile 文件,并在文件内添加以下内容:

	创建空目录,把img.tar移动到当前目录下
cd /home/hunpi
mkdir package_docker
chmod 777 package_docker
mv /img.tar ./

	在一个空目录下,新建一个名为 Dockerfile 文件,并在文件内添加以下内容:
FROM scratch
ADD img.tar /

	在当前目录下执行构造镜像命令:
docker build .

  现在可以执行docker build .,然后就能得到自己的镜像了!

  (3)遇到问题:好家伙,直接给虚拟机空间干不够了。
目前有两个选择:第一个是下载小的iso镜像,比如alpine系统,或者Docker官方提供的镜像,继续把虚拟机转docker。第二个选择,是直接拉取别人的docker,比较小巧且简单。
在这里插入图片描述在这里插入图片描述


2.使用网上已有的镜像

  (1)下载docker镜像,upload-labs镜像已经部署了网站环境,尝试使用。
直接连接需要部署的服务器,安装docker镜像(内网Nat模式也能连接)。

	连接需要部署的服务器:ssh 用户@ip

	搜索镜像:docker search upload-labs
	下载镜像:docker pull c0ny1/upload-labs(不搜索直接拉取会报错Error response from daemon)  
	查看镜像id:docker images
	运行镜像id,创建容器实例:docker run -it -d -p 8001:80 aa4fdd1dd211 
	
	浏览器访问成功:ip:8001(关闭防火墙:systemctl stop firewalld.service)

  出题需要,我们需要多台容器,但下载的镜像可以开启在多个端口,所以:

运行镜像id,创建容器实例:docker run -it -d -p 8002:80 aa4fdd1dd211 
运行镜像id,创建容器实例:docker run -it -d -p 8003:80 aa4fdd1dd211 
运行镜像id,创建容器实例:docker run -it -d -p 8004:80 aa4fdd1dd211 

在这里插入图片描述

在这里插入图片描述



  (2)进入docker镜像,开始魔改。接下来是出题环节。

	查看运行中的容器:docker ps
	
	进入容器内部:docker exec -it 容器id /bin/bash
	
	清空Web根目录文件:rm -rf /var/www/html/*

	更新软件包工具:apt-get update
	
	安装熟悉的编辑器:apt-get install vim

参考

  《ubuntu系统安装VMware Tools安装详细过程》
https://blog.csdn.net/qq_40584960/article/details/82946371

  《Ubuntu安装php7.0环境》
https://www.cnblogs.com/wanglijun/p/8724396.html

  实体书《Docker实践》-章节《3.1 从虚拟机到容器》-伊恩·米尔,出版时间2018-02。

  《Ubuntu E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用或没有文件)》,2020-06。https://blog.csdn.net/qq_36458461/article/details/106500299

  《在Ubuntu 18.04安装Docker》,2020-03
https://blog.csdn.net/b9567/article/details/105027440/

  《Docker 搭建 upload-labs 靶场》,2020-03
https://blog.csdn.net/Dome_/article/details/105058822

  《进入docker内部》, 2019-08
https://blog.csdn.net/qq_29257691/article/details/100021484

  《Docker容器安装软件报E: Unable to locate package的错误》
https://www.pianshen.com/article/2421983296/

以上是关于从镜像开始搭建Web-docker靶场的主要内容,如果未能解决你的问题,请参考以下文章

从0开始利用VirtualBox搭建虚拟机靶场

搭建靶场环境

Docker搭建靶场操作

Docker搭建漏洞靶场(VulhubVulnappVulfocus)

vulnhub靶场搭建

搭建Vulhub开源漏洞靶场