从镜像开始搭建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安装网站环境
第一次安装:通过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靶场的主要内容,如果未能解决你的问题,请参考以下文章