基于Kali Linux宿主机docker部署靶机环境【Pentester更要请进】
-
环境介绍
-
本机操作系统为MacOS 10.15.7(后文中简称"本机")【windows请各位大佬自行测试】
-
本机安装VMware Fusion 12.1.0 【自己想办法下载,也可以使用其他虚拟环境】
-
部署kali linux(2020.03版image)虚机环境(后文中简称"虚机")【kali的安装请移步至kali官网
https://www.kali.org
】
-
虚机上部署docker环境,Engine版本: 20.10.3+dfsg1【详见下文教程】
-
docker网络环境部署【详见下文教程】
-
容器搜索、下载、部署、启动【详见下文教程】
- 容器1:sqli(下文中简称c1)
- 容器2:dvwa(下文中简称c2)
-
结构图
-
-
需求实现
- 所有容器之间可以互通
- 所有容器可以上internet
- 所有容器与本机之间可以互通
- 所有容器与虚机之间可以互通
- 本教程不包含容器应用internet发布【后续如需求再更新此博文】
-
小遗憾
- 容器和虚机如果仅使用vmnet8网卡下的macvlan,这两者无法互相通信,具体原因暂时未知【vmnet8网卡于安装vm环境后自动生成】
- 目前解决方案是通过给容器第二个桥接的网网络,让容器可以与虚机之间相互通信
- 后续若研究出来了再来补更
第一步:环境检查
- 确保本机可以进行internet冲浪
- 确保本机vmware虚机环境安装正确
- 确保虚机正常运行【本环境中 kali linux虚机的IP地址为172.16.106.129】
各位客官老爷自己搞定,如遇到问题可以留言沟通
第二步:虚机部署docker环境
- 打开虚机,点开terminal
$ apt-get update
更新apt源。 - 安装必要组件
- ssl、https组件安装
$ apt-get install -y apt-transport-https ca-certificates
- dirmngr组件安装
$ apt-get install dirmngr
- ssl、https组件安装
- apt换源[清华教育]
curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/gpg | sudo apt-key add -
【可以选择阿里、中科大等其他源,自己决定】 - 检查换源成果
$ echo 'deb https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/ buster stable' | sudo tee /etc/apt/sources.list.d/docker.list
- 安装最新版本docker 以及docker文件管理项目
$ apt-get install docker docker-compose
- docker安装完成后,在terminal中测试下
$ docker version
,可以检查当前安装的docker版本
第三步:部署docker网络环境
- 本步骤和下载镜像不分先后,个人习惯先把环境部署好
- 新建macvlan
$ docker network create -d macvlan --subnet=172.16.106.0/24 --ip-range=172.16.106.0/24 --gateway=172.16.106.2 -o macvlan_mode=bridge -o parent=eth0 macvlan
, 用于容器上网、与本机通信使用【macvlan这个名字可以换,但是指定模式的时候就别自定义哦,至于网段的话,按照你的实际情况而定哦】- -d 指定容器网络驱动模式
- --subnet 指定容器使用的网段
- --ip 指定容器使用的IP地址
- -o 指定驱动特定选项, 用于指定网卡为虚机的eth0【网卡名根据你实际情况而定】
- 最后一个
macvlan
可以自己定义名称【我图方便,就和网络模式保持一致了】
- 新建dnet1
$ docker network create -d bridge dnet1
, 用于容器与虚机之间通信使用- dnet1 是自己新建的自定义网络,名字可以自定义
- 查看docker网络
$ docker network ls
, 确认docker网络列表
第四步:安装并启动容器
-
搜索需要的容器
$ docker search sqli
, 我选择了安装acgpiano公开的镜像,那就下载镜像呗$ docker pull acgpiano/sqli-labs
-
按照上面的套路,下载dvwa镜像
$ docker pull citizenstig/dvwa
-
激动人心的时刻到了,咱可以启动容器了,先启一台呗
$ docker run -d --network=dnet1 --name=sqli -p 9000:80 acgpiano/sqli-labs
【这些参数不做赘述了,详情可以看--help】
-
本机访问
http://172.16.106.129:9000
测试下第一台容器, 应该可以看到页面了吧~~同时kali虚机中可以使用浏览器访问http://172.18.0.2
,嘿嘿嘿,是不是有点小激动??【sqli容器自动分配到的地址为172.18.0.2】
-
虚机docker跳登容器的控制台
$ docker exec -it sqli bash
, 来测试下连通性咯,不难发现本机连上sqli容器【为了便于本机直接ssh管理容器,所以这个问题还是得解决】 -
那来吧,解决这个问题!一条命令搞定
$ docker network connect --ip=172.16.106.200 macvlan sqli
【macvlan这个网络是在第三步:部署网络环境的时候就已经创建好了,为了便于管理指定一个IP地址】
-
至此,放心大胆的在本机
$ ping 172.16.106.200
来测试连通性吧! -
独白: 在这里我手把手教各位如何部署,至于一些喜欢性的查询操作我可能都省略了,因为经过反复测试查看,按照我的版本部署应该是没啥大问题的,至于深入的操作,各位自己--help领悟,有疑问可以留言交流。
-
dvwa的部署参考上面的详细步骤,无非就是将端口映射 【9000:90】改为其他你喜欢的端口,比如【9001:80】 ,还有就是替换镜像 和 设定的自定义名称, 各位客官老爷,自己动手来一发?
第五步:镜像上传(用于备份、多地快速部署)
- 操作之前请各位自行注册dockerhub, 并且在docker的主机上使用
$ docker login
来登录您的docker仓库。 - 后面的操作,请各位客官老爷移步至我另一篇博文
https://www.cnblogs.com/lich1x/p/14483691.html
详细作为参考,还是比较简单易懂的,所以我也写的比较简单,哈哈哈哈...