当前位置:   article > 正文

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

ctf靶场搭建

目录

前言

靶场介绍

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 虚拟机

靶场环境部署

以 root 权限连接服务器

系统环境配置

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

  1. systemctl stop firewalld.service
  2. # 关闭防火墙
  3. systemctl disable firewalld.service
  4. # 禁止防火墙开机自启动

关闭 SELinux 安全子系统

  1. vi /etc/selinux/config
  2. # 将 SELINUX=enforcing 修改为 SELINUX=disabled
  3. reboot
  4. # 重启虚拟机使配置生效

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

  1. systemctl status firewalld
  2. # 查看系统防火墙状态
  3. getenforce
  4. # 查看 SELinux 状态

Docker 环境配置

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

yum repolist enabled

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

下载 Docker

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

  1. yum install -y yum-utils
  2. # 下载 yum-utils 软件包,它是yum软件包管理器的扩展
  3. yum-config-manager \
  4. --add-repo \
  5. https://download.docker.com/linux/centos/docker-ce.repo
  6. # 配置 docker 镜像仓库
  7. yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
  8. # 下载 docker 以及相关依赖

配置 Docker 镜像源

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

  1. vi /etc/docker/daemon.json
  2. # 写入内容
  3. {
  4. "registry-mirrors": [
  5. "https://dockerproxy.com",
  6. "https://hub-mirror.c.163.com",
  7. "https://mirror.baidubce.com",
  8. "https://ccr.ccs.tencentyun.com"
  9. ]
  10. }

启动 docker 

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

  1. systemctl start docker
  2. # 启动 docker
  3. systemctl enable docker
  4. # 设置 docker 开机自启动
  5. systemctl restart docker
  6. # 重启 docker

靶场配置

靶场镜像抓取

利用 docker 命令抓取靶场镜像

  1. docker pull infoslack/dvwa
  2. # 抓取 dvwa 靶场
  3. docker pull acgpiano/sqli-labs
  4. # 抓取 sqli-labs 靶场
  5. docker pull c0ny1/upload-labs
  6. # 抓取 upload-labs 靶场

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

查看下载好的镜像

docker images

创建并运行 docker 容器

  1. docker run --restart=always --name dvwa -it -dp 9001:80 infoslack/dvwa
  2. docker run --restart=always --name sqli-labs -it -dp 9002:80 acgpiano/sqli-labs
  3. 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 类似

执行命令

查看 docker 容器是否创建

docker ps

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

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

DVWA

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

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

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

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

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

登录后的页面如下图

靶场重置

SQLi-LABS

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

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

靶场界面如下图

靶场重置

upload-labs

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

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

靶场重置 

总结

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

补充:docker 靶场高级使用

进入 docker 靶场

  1. docker exec -it [容器IP或容器名称] /bin/sh
  2. # 容器ID 和 容器名称 可以通过命令 docker ps 查询得到
  3. exit
  4. # 退出 docker 容器

举例:DVWA 靶场

docker-宿主机之间 文件复制

  1. docker cp [宿主机文件路径] [容器IP或容器名称]:[容器路径]
  2. # 将文件复制进 docker 容器内,
  3. # 容器内路径如果不记得的话,直接整到 / 目录,复制进去后在进入容器慢慢找
  4. docker cp [容器IP或容器名称]:[容器文件路径] [宿主机文件保存路径]
  5. # 将文件 docker 容器内复制出来
  6. # 宿主机文件保存路径建议直接 . 代替,“.” 表示当前目录,复制到当前目录下

举例:DVWA 靶场

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

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

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号