CTF 三大测试靶场搭建:DVWA、SQLi-LABS、upload-labs 靶场部署教程(VM + CentOS 7 + Docker)

目录

前言

靶场介绍

DVWA

SQLi-LABS

upload-labs

靶场搭建

CentOS 7 虚拟环境准备

靶场环境部署

系统环境配置

Docker 环境配置

下载 Docker

配置 Docker 镜像源

启动 docker 

靶场配置

靶场镜像抓取

创建并运行 docker 容器

靶场的访问 & 靶场的初始化

DVWA

靶场重置

SQLi-LABS

靶场重置

upload-labs

靶场重置 

总结

补充:docker 靶场高级使用

进入 docker 靶场

docker-宿主机之间 文件复制


前言

本文主要是介绍在 CentOS 7 环境下,利用 docker 部署 CTF 常见三大模拟靶场,分别是综合型靶场 DVWA ;SQL 注入靶场 SQLi-LABS;文件上传靶场 upload-labs。

部署的方式是 通过 VM 虚拟机软件,搭建 CentOS 7 环境,利用 Docker 直接拉取靶场环境进行靶场部署。

靶场介绍

DVWA

DVWA 全称为 Damn Vulnerable Web Application,意为存在糟糕漏洞的web应用,它是一个基于PHP/MySQL开发的存在糟糕漏洞的web应用,旨在为专业的安全人员提供一个合法的环境,来测试他们的工具和技能。

该靶场是一个综合型靶场,靶场内集成了暴力破解,文件上传,文件包含,SQL注入,XSS 攻击等常见漏洞,且设有高中低三档难度,非常适合初学者做入门实操。

SQLi-LABS

SQLi-LABS 靶场是由一位印度程序员开发,用来专门学习sql注入的一个练习平台。该靶场共有 65 关,模拟了大部分 SQL 注入场景。

upload-labs

upload-labs 是一个使用 php 语言编写的,专门收集渗透测试和 CTF 中遇到的各种上传漏洞的靶场。

靶场搭建

CentOS 7 虚拟环境准备

详细请看我上一篇文章:渗透靶场环境准备

准备一台 CentOS 7 虚拟机

CTF 三大测试靶场搭建:DVWA、SQLi-LABS、upload-labs 靶场部署教程(VM + CentOS 7 + Docker)_第1张图片

靶场环境部署

以 root 权限连接服务器

系统环境配置

关闭防火墙,并禁止防火墙启动

systemctl stop firewalld.service
# 关闭防火墙

systemctl disable firewalld.service
# 禁止防火墙开机自启动

CTF 三大测试靶场搭建:DVWA、SQLi-LABS、upload-labs 靶场部署教程(VM + CentOS 7 + Docker)_第2张图片

关闭 SELinux 安全子系统

vi /etc/selinux/config
# 将 SELINUX=enforcing 修改为 SELINUX=disabled

reboot
# 重启虚拟机使配置生效

CTF 三大测试靶场搭建:DVWA、SQLi-LABS、upload-labs 靶场部署教程(VM + CentOS 7 + Docker)_第3张图片

重启虚拟机后,输入以下命令判断配置是否生效,如图所示,需要两个都显示关闭

systemctl status firewalld
# 查看系统防火墙状态

getenforce
# 查看 SELinux 状态

CTF 三大测试靶场搭建:DVWA、SQLi-LABS、upload-labs 靶场部署教程(VM + CentOS 7 + Docker)_第4张图片

Docker 环境配置

该步骤需要使用 YUM 仓库,建议进行此步骤前先将系统的 YUM 仓库源换为国内源,不然可能会出现下载时间过长的情况,可以通过下方命令进行查看

yum repolist enabled

具体操作步骤请看我上一篇文章:渗透靶场环境准备 CentOS 7 配置 - 更换 YUM 镜像源

下载 Docker

执行下方命令,下载 Docker 环境

yum install -y yum-utils
# 下载 yum-utils 软件包,它是yum软件包管理器的扩展

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
# 配置 docker 镜像仓库

yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
# 下载 docker 以及相关依赖

CTF 三大测试靶场搭建:DVWA、SQLi-LABS、upload-labs 靶场部署教程(VM + CentOS 7 + Docker)_第5张图片

配置 Docker 镜像源

docker 并没有设置镜像源,需要将其改为国内镜像源

vi /etc/docker/daemon.json
# 写入内容

{
  "registry-mirrors": [
    "https://dockerproxy.com",
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com",
    "https://ccr.ccs.tencentyun.com"
  ]
}

CTF 三大测试靶场搭建:DVWA、SQLi-LABS、upload-labs 靶场部署教程(VM + CentOS 7 + Docker)_第6张图片

启动 docker 

执行下方命令,启动 docker,并将 docker 设置为开机自启动

systemctl start docker
# 启动 docker

systemctl enable docker
# 设置 docker 开机自启动

systemctl restart docker
# 重启 docker

CTF 三大测试靶场搭建:DVWA、SQLi-LABS、upload-labs 靶场部署教程(VM + CentOS 7 + Docker)_第7张图片

靶场配置

靶场镜像抓取

利用 docker 命令抓取靶场镜像

docker pull infoslack/dvwa
# 抓取 dvwa 靶场

docker pull acgpiano/sqli-labs
# 抓取 sqli-labs 靶场

docker pull c0ny1/upload-labs
# 抓取 upload-labs 靶场 

抓取镜像的时候会比较久,建议整一杯茶边喝边等 ( •̀ ω •́ )✧

CTF 三大测试靶场搭建:DVWA、SQLi-LABS、upload-labs 靶场部署教程(VM + CentOS 7 + Docker)_第8张图片

查看下载好的镜像

docker images

CTF 三大测试靶场搭建:DVWA、SQLi-LABS、upload-labs 靶场部署教程(VM + CentOS 7 + Docker)_第9张图片

创建并运行 docker 容器

docker run --restart=always --name dvwa -it -dp 9001:80 infoslack/dvwa
docker run --restart=always --name sqli-labs -it -dp 9002:80 acgpiano/sqli-labs
docker run --restart=always --name upload-labs -it -dp 9003:80 c0ny1/upload-labs

命令解释:以第一条为例

命令 功能
docker run 启动容器
--restart=always 开机自启动,若启动失败则一直启动
--name dvwa 设置容器名称(这里设置容器名称为 dvwa)
-it 以交互模式运行容器并为容器重新分配一个伪输入终端
-d 后台运行容器
-p 9000:80 将主机的端口映射到容器的一个端口,即:主机端口:容器内 部的端口
infoslack/dvwa 镜像名称

docker 通俗一点来讲,有点像是 Linux 平台下的虚拟机,和 VMware 类似

执行命令

CTF 三大测试靶场搭建:DVWA、SQLi-LABS、upload-labs 靶场部署教程(VM + CentOS 7 + Docker)_第10张图片

查看 docker 容器是否创建

docker ps

靶场的访问 & 靶场的初始化

靶场访问方式为:[IP地址]:[映射端口号]

DVWA

浏览器访问: [IP地址]:9001

点击 “Create / Reset Database” 进行初始化

CTF 三大测试靶场搭建:DVWA、SQLi-LABS、upload-labs 靶场部署教程(VM + CentOS 7 + Docker)_第11张图片

点击完后会出现下图内容,此时页面会自动跳转,如果不自动跳转的话,可点击 “login” 进行手动跳转

CTF 三大测试靶场搭建:DVWA、SQLi-LABS、upload-labs 靶场部署教程(VM + CentOS 7 + Docker)_第12张图片

出现界面则环境初始化成功,初始账户密码为 admin/password

当然,可以通过密码爆破的方式把账户密码弄出来 (~ ̄▽ ̄)~

CTF 三大测试靶场搭建:DVWA、SQLi-LABS、upload-labs 靶场部署教程(VM + CentOS 7 + Docker)_第13张图片

登录后的页面如下图

CTF 三大测试靶场搭建:DVWA、SQLi-LABS、upload-labs 靶场部署教程(VM + CentOS 7 + Docker)_第14张图片

靶场重置

CTF 三大测试靶场搭建:DVWA、SQLi-LABS、upload-labs 靶场部署教程(VM + CentOS 7 + Docker)_第15张图片

SQLi-LABS

浏览器访问: [IP地址]:9002

CTF 三大测试靶场搭建:DVWA、SQLi-LABS、upload-labs 靶场部署教程(VM + CentOS 7 + Docker)_第16张图片

点击 “Setup/reset Database for labs” 创建环境,出现下图界面即创建成功

CTF 三大测试靶场搭建:DVWA、SQLi-LABS、upload-labs 靶场部署教程(VM + CentOS 7 + Docker)_第17张图片

靶场界面如下图

CTF 三大测试靶场搭建:DVWA、SQLi-LABS、upload-labs 靶场部署教程(VM + CentOS 7 + Docker)_第18张图片

靶场重置

CTF 三大测试靶场搭建:DVWA、SQLi-LABS、upload-labs 靶场部署教程(VM + CentOS 7 + Docker)_第19张图片

upload-labs

浏览器访问: [IP地址]:9003

CTF 三大测试靶场搭建:DVWA、SQLi-LABS、upload-labs 靶场部署教程(VM + CentOS 7 + Docker)_第20张图片

该靶场默认并没有上传目录文件,需要我们点击 “清空上传文件” 按钮进行创建

CTF 三大测试靶场搭建:DVWA、SQLi-LABS、upload-labs 靶场部署教程(VM + CentOS 7 + Docker)_第21张图片

靶场重置 

CTF 三大测试靶场搭建:DVWA、SQLi-LABS、upload-labs 靶场部署教程(VM + CentOS 7 + Docker)_第22张图片

总结

至此,靶场环境就已经部署好了,之后的使用,就直接开启虚拟机,等待终端显示IP地址,然后通过  [IP地址]:[映射端口号]  进行访问即可,基本不需要登录到 CentOS 7 虚拟机内,如果靶场坏了的话,直接通过靶场的重置按钮一键恢复即可。接下来介绍如何进入 docker 容器内,查看靶场源代码,如果自己觉得不需要这个操作,可直接跳过。

补充:docker 靶场高级使用

进入 docker 靶场

docker exec -it [容器IP或容器名称] /bin/sh
# 容器ID 和 容器名称 可以通过命令 docker ps 查询得到

exit
# 退出 docker 容器

举例:DVWA 靶场

CTF 三大测试靶场搭建:DVWA、SQLi-LABS、upload-labs 靶场部署教程(VM + CentOS 7 + Docker)_第23张图片

docker-宿主机之间 文件复制

docker cp [宿主机文件路径] [容器IP或容器名称]:[容器路径]
# 将文件复制进 docker 容器内,
# 容器内路径如果不记得的话,直接整到 / 目录,复制进去后在进入容器慢慢找

docker cp [容器IP或容器名称]:[容器文件路径] [宿主机文件保存路径]
# 将文件 docker 容器内复制出来
# 宿主机文件保存路径建议直接 . 代替,“.” 表示当前目录,复制到当前目录下

举例:DVWA 靶场

将 anaconda-ks.cfg 文件复制到 dvwa 容器内

CTF 三大测试靶场搭建:DVWA、SQLi-LABS、upload-labs 靶场部署教程(VM + CentOS 7 + Docker)_第24张图片

将 dvwa 容器内的 run.sh 文件复制到宿主机

CTF 三大测试靶场搭建:DVWA、SQLi-LABS、upload-labs 靶场部署教程(VM + CentOS 7 + Docker)_第25张图片

你可能感兴趣的:(渗透测试,靶场搭建,网络安全,web安全,linux,centos,系统安全)