记一次使用Docker部署漏洞靶场环境(以upload-labs为例)到ECS的经历

记一次使用Docker部署漏洞靶场环境(以upload-labs为例)到ECS的经历

  • 前言
  • 知识背景
    • 什么是Docker
    • Docker教程资源
    • 什么是upload-labs
  • 过程记录
    • Docker安装(使用的ECS系统为CentOS)
    • 部署upload-labs
    • 最后

这篇主要是为了记录使用docker部署环境的的过程,
方便自己下次可以很快的回忆起来,嗯。。。。。。。

前言

和同学合租了一台阿里云的ECS, 当时是大家一起在这台主机上搭建配置了一个论坛,后来经历了一次网站搬家,php环境大家一直懒得调23333,网址就坏了,网址:www.fucguigui.com.
想着ECS放着也是放着,正好学习web安全的时候需要各种靶场,不如直接把靶场环境临时搭建在服务器上,这样使用起来也还算比较方便,不过靶场环境搭建的公网环境还是比较危险的,所以不用的时候可能会关。

知识背景

什么是Docker

Docker是一个开源的容器引擎,它有助于更快地交付应用。 Docker可将应用程序和基础设施层隔离,并且能将基础设施当作程序一样进行管理。使用 Docker可更快地打包、测试以及部署应用程序,并可以缩短从编写到部署运行代码的周期。
一句话解释就是把我们要运行的东西打包在一个容器里面想用的时候随时能把容器拿出来的东西。

Docker教程资源

十分钟学会用docker部署微服务:https://my.oschina.net/u/3796575/blog/1838385
Docker教程:https://my.oschina.net/u/3796575/blog/1838385

什么是upload-labs

upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。项目作者c0ny1,开源地址:https://github.com/c0ny1/upload-labs

过程记录

Docker安装(使用的ECS系统为CentOS)

1、使用 root 权限登录 Centos。确保 yum 包更新到最新。

# yum -y update

2、卸载旧版本(如果安装过旧版本的话)

# yum remove docker docker-common docker-selinux docker-engine

3、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

# yum install -y yum-utils device-mapper-persistent-data lvm2

4、设置yum源

# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

5、安装docker

# yum install docker-ce 

6、启动docker

# service docker start

7、测试docker安装

# docker version

如果docker成功安装此时会回显版本信息

Client:
 Version:         1.13.1
 API version:     1.26
 Package version: docker-1.13.1-91.git07f3374.el7.centos.x86_64
 Go version:      go1.10.3
 Git commit:      07f3374/1.13.1
 Built:           Wed Feb 13 17:10:12 2019
 OS/Arch:         linux/amd64

Server:
 Version:         1.13.1
 API version:     1.26 (minimum version 1.12)
 Package version: docker-1.13.1-91.git07f3374.el7.centos.x86_64
 Go version:      go1.10.3
 Git commit:      07f3374/1.13.1
 Built:           Wed Feb 13 17:10:12 2019
 OS/Arch:         linux/amd64
 Experimental:    false

部署upload-labs

登录ECS的ssh
1、先克隆项目到本地/opt并解压

cd ~/opt
wget https://github.com/c0ny1/upload-labs/archive/0.1.tar.gz
tar zxvf 0.1.tar.gz

解压完之后会有一个upload-labs-0.1文件夹

2、建立docker image

[root@iZwz99pngxebunnn1fiexjZ opt]# cd upload-labs-0.1/
[root@iZwz99pngxebunnn1fiexjZ upload-labs-0.1]# cd docker/
[root@iZwz99pngxebunnn1fiexjZ docker]# ls
1  Dockerfile  docker-php.conf  fg  php.ini

可以看到这个目录下有的Dockerfiledocker-php.conf文件,根据这两个文件创建docker镜像的时候可以根据具体情况修改一下。因为我是用的ecs本来的/var/www目录下已经放了之前的网站源码,创建的时候uploads-labs的源码是被我放在/opt/upload-labs-0.1下,所以这里要修改一下docker-php.conf
内容如下

# 
#       SetHandler application/x-httpd-php
# 

AddHandler application/x-httpd-php .php

DirectoryIndex disabled
DirectoryIndex index.php index.html


        Options -Indexes
        AllowOverride All


然后创建镜像

[root@iZwz99pngxebunnn1fiexjZ docker]# pwd
/opt/upload-labs-0.1/docker
[root@iZwz99pngxebunnn1fiexjZ docker]# docker build -t upload-labs

查看创建的images

[root@iZwz99pngxebunnn1fiexjZ docker]# docker images
REPOSITORY                           TAG                 IMAGE ID            CREATED             SIZE
upload-labs                          latest              c47b1eb092c4        3 minutes ago         472 MB

3、运行这个镜像

# docker run -d -p 252:80 upload-labs

-d 表示的后台运行,-p 表示端口映射关系,252是宿主机的端口,80是docker的虚拟端口
查看运行的镜像:

[root@iZwz99pngxebunnn1fiexjZ ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                 NAMES
60fbacda3b4e        upload-labs         "apache2-foreground"   3 hours ago         Up 3 hours          0.0.0.0:252->80/tcp   festive_goodall

4、解决一点小问题
阿里云的ECS安全组策略默认是不开放其他公网端口的,要去开放一下ECS安全组的252端口才能正常访问www.fucguigui.com:252
试本次搭建的upload-labs,报错docker里面没有upload目录,
项目作者介绍到这是由于github不支持上传空目录造成的,自己搭建环境的时候先打开点击“清空上传文件”按钮,即可生成upload目录,之后环境就正常了。

最后

其实创建docker镜像还有个更方便的方法,就是从docker镜像站拉取,镜像站一般你要的靶场环境其实都已经能搜到了,比如:sqli-labs, metasploitable,dvwa…等等等等。
用好下面这两个命令

docker search [要用的环境]
docker pull [要拉取的]

最后,这篇文章里面放出了自己搭建的在线靶场地址,如果靶场关了想玩儿也可以联系我,我还是非常乐意和各大佬一起交流学习的,各位大佬如果玩儿的话,轻点,轻点啊!!!!

你可能感兴趣的:(Docker)