Bootstrap

kali中安装docker并搭建靶场(新手)

注意,此文搭建的docker仅满足安全学习,不满足开发要求,因为少了一些东西。另外本文用的是mousepad而非vim。文章算是我的学习笔记,欢迎讨论交流。

安装docker前的准备工作

apt换源,配置docker镜像加速器

apt相当于kali的应用商店,但是这个商店在国外下载东西慢,换源相当于换了个下载速度快的应用商店

配置docker镜像加速器和apt换源原因一样,也是因为原来的下载镜像太慢了

1,apt换源

        1.1,进入kali先切换到root用户 

sudo su

注意输入密码时候是不显示的,输完回车就行 

        1.2,apt换源

mousepad /etc/apt/sources.list

 这时候进入了一个类似记事本的页面,把里面东西删完,把下面的阿里源粘贴进去,保存一下(坐上角file里面的save点一下),然后退出这个记事本页面(右上角×点一下就退出)

#阿里源
deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib

        1.3,更新apt源

相当于商店刷新一下,刷新后的商店就变成换源后的商店了,下载东西更快

apt update

2,配置docker镜像加速器

        2.1获取一个阿里加速器,这个是免费的

https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

支付宝扫码登录

复制我红色框框内容

        2.2配置docker加速器

 在kali输入

mousepad /etc/docker/daemon.json

 回车进入了一个记事本页面,把2.1复制的粘贴到这里

保存,退出记事本 

开始安装docker并搭建靶场(以安装dvwa靶场为例)

方法一,新人使用(注意新手初学可以这么安装,实际工作不要这样安装,会缺少很多东西)

整体流程为:安装docker------启动docker------安装镜像(包含:搜索镜像名字-------找下载量最大的镜像--------copy里面镜像下载代码--------回到kali粘贴复制的代码,开始下载镜像)-------安装容器---------启动容器--------访问靶场

1,安装docker

apt install docker.io

2,启动docker

systemctl start docker

3,安装镜像(以安装dvwa镜像为例)

        3.1,找dvwa镜像

docker镜像安装是要去docker镜像网站找镜像

docker镜像网站

需要科学上网才能访问,自己想办法吧

搜索dvwa

 找下载量最大的进去

 

 右边红框框里面就是镜像下载代码,复制一下

docker pull sagikazarmark/dvwa
        3.2,下载dvwa镜像
 

回车,等待下载完成

 下载完成

可以查看都下载哪些镜像

docker images

 

我这里有两个镜像,dvwa和lamp ,lamp是我之前下载的,dvwa是我刚才新下载的,你们只有一个dvwa镜像

        3.3,docker安装镜像为容器
关于镜像和容器的关系我不明了,目前我的理解是:镜像相当于软件安装包,容器相当于安装后的软件,软件安装好了才能使用,镜像安装好了才能使用容器。(不一定对哈,欢迎讨论)
docker run -dit -p 80:80 sagikazarmark/dvwa

 可以查看都有哪些容器并查看容器ID

docker ps -a

 

 我这里有lamp和dvwa容器,lamp是我之前安装的,你们只有dvwa容器

可以看到第一列是容器的ID,而启动容器要用容器ID前三位,容器的ID就相当于每个同学都有自己的学号一样,我们可以通过ID前三位找到这个容器。

注意,每个人的容器ID是不一样的,下面的步骤都要用你自己电脑上显示的ID前三位

        3.4,启动容器
我的理解是:容器相当于安装好了的软件,只有启动了软件才能使用软件,容器只有启动了才能使用容器的靶场。启动容器就是搭建靶场。
#注意要用自己的容器ID前三位,每个人的不一样。我的前三位是064
docker start 064

容器启动成功了,这时候可以访问一下靶场

         3.5,访问搭建好的dvwa靶场

这里我使用虚拟机的eth0网卡IP访问,首先看一下IP是多少

ifconfig

打开kali里面的Firefox浏览器输入这个eth0的IP并回车

只输入IP就行,我截图中IP后面的login.php是自动添加的

 

 

靶场访问成功,说明靶场搭建好了

其他操作

为了方便新手安装,我并没有写镜像的删除,容器的关闭和删除,docker的重启和关闭,安装过程中代码是什么意思,现在我逐一解释

docker操作
1,启动docker
systemctl start docker
2,重启docker

有时候docker太卡了,重启一下就行

systemctl restart docker
3,关闭docker
systemctl stop docker
镜像操作
1,下载镜像
docker pull 镜像名字
#比如下载dvwa镜像
#docker pull sagikazarmark/dvwa
2,查看镜像ID
docker images
3,删除镜像
docker rmi 镜像ID前三位

容器操作
1,安装镜像为容器
docker run -dit -p 80:80 镜像名字
#例如下载dvwa镜像时候,用的就是它的名字
#docker run -dit -p 80:80 sagikazarmark/dvwa

 用的是镜像名字,安装的其实是容器

2,关闭容器
docker stop 容器ID前三位
#比如现在有个容器前三位是345,我要关闭这个容器
#docker stop 345
3,删除容器
docker rm -f 容器ID前三位
#比如现在有个容器前三位是345,我要删除这个容器
#docker rm -f 345

方法二,docker-compose自动化docker部署

(仅满足安全学习,不满足开发要求,会缺少一些东西)

方法二比方法一简单易操作

以搭建靶场thinkphp5.0.9为例

1,安装docker-compose

apt insatll docker-compose

 2,查找靶场

在docker靶场网站找靶场,我找一下thinkphp5.0.9靶场

注意找靶场其实找的是靶场的名字

docker镜像网站

 我选择第一个,点一下Tags看有没有thinkphp5.0.9版本的靶场

在Tag里面找靶场是为了看存不存在想要的靶场,其实还是在找靶场名字

 

发现确实有5.0.9版本靶场 

3,安装靶场

mousepad docker-compose.yaml

 把下面的复制到打开的记事本里去

version: '3'
services:
 web:
   image: vulhub/thinkphp:5.0.9
   ports:
    - "8080:80"

保存,退出记事本

4,启动靶场

docker-compose up -d

 5,登录靶场

先看一下登录靶场IP,复制eth0的IP,每个人的可能不一样,你用你电脑上显示的IP

ifconfig

 访问靶场

#注意这里是http,不是https
http://192.168.238.128:8080

 

访问成功,靶场搭建成功 

 报错处理

1,删除镜像时候报错
Error response from daemon: conflict: unable to delete c15726116aef (cannot be forced) - image is being used by running container e6d8ca77d8b9

 这是因为有容器正在运行,关闭或者删除正在运行的容器,我这里直接删除了

 现在就可以删除镜像了

2,在docker-compose里搭建多个靶场

你会发现,我们在方法二中搭建靶场时候使用命令修改了一个文件

mousepad docker-compose.yaml

修改了docker-compose.yaml文件。文件内容修改成什么靶场才能搭建什么靶场,那如果我要搭建另一个靶场时候就要删除前一个靶场在docker-compose.yaml的内容了吗?其实不然,方法如下:

每个文件夹里面就只有一个docker-compose.yaml文件,那创建两个文件夹,在不同的文件夹中修改各自的docker-compose.yaml就行了。

比如我现在要安装thinkphp5.0.23和thinkphp5.0.20

2.1,创建两个文件夹,我创建了thinkphp5.0.23文件夹和thinkphp5.0.20文件夹

mkdir thinkphp5.0.23  
mkdir thinkphp5.0.20

 2.2,在各自文件夹内修改docker-compose.yaml文件

进入thinkphp5.0.23文件夹

cd thinkphp5.0.23

打开docker-compose.yaml

mousepad docker-compose.yaml

修改docker-compose.yaml

version: '3'
services:
 web:
   image: vulhub/thinkphp:5.0.23
   ports:
    - "8080:80"

退出thinkphp5.0.23文件夹

cd ..

进入thinlphp5.0.20文件夹

cd thinphp5.0.20

打开并修改docker-compose.yaml等操作同上

2.3,在各自文件夹内启动靶场即可

3,端口冲突

在创建靶场时候有8080:80,这是干什么的呢?

 前面的8080是虚拟机端口号,可以修改为0~65535之间任意数字

后者80端口是靶场的端口,不要修改靶场端口

当在创建靶场时候这个8080是默认的,在创建多个靶场时候如果都用这个8080端口那就会端口冲突,就相当多个人重名,一叫这个名字大家不知道在叫谁。

因此,在创建多个靶场时候要注意修改前面的端口,在访问靶场时候把端口号加上,比如我这里端口是6666

  

 

;