目录
前言
靶场介绍
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 全称为 Damn Vulnerable Web Application,意为存在糟糕漏洞的web应用,它是一个基于PHP/MySQL开发的存在糟糕漏洞的web应用,旨在为专业的安全人员提供一个合法的环境,来测试他们的工具和技能。
该靶场是一个综合型靶场,靶场内集成了暴力破解,文件上传,文件包含,SQL注入,XSS 攻击等常见漏洞,且设有高中低三档难度,非常适合初学者做入门实操。
SQLi-LABS 靶场是由一位印度程序员开发,用来专门学习sql注入的一个练习平台。该靶场共有 65 关,模拟了大部分 SQL 注入场景。
upload-labs 是一个使用 php 语言编写的,专门收集渗透测试和 CTF 中遇到的各种上传漏洞的靶场。
详细请看我上一篇文章:渗透靶场环境准备
准备一台 CentOS 7 虚拟机
以 root 权限连接服务器
关闭防火墙,并禁止防火墙启动
systemctl stop firewalld.service
# 关闭防火墙
systemctl disable firewalld.service
# 禁止防火墙开机自启动
关闭 SELinux 安全子系统
vi /etc/selinux/config
# 将 SELINUX=enforcing 修改为 SELINUX=disabled
reboot
# 重启虚拟机使配置生效
重启虚拟机后,输入以下命令判断配置是否生效,如图所示,需要两个都显示关闭
systemctl status firewalld
# 查看系统防火墙状态
getenforce
# 查看 SELinux 状态
该步骤需要使用 YUM 仓库,建议进行此步骤前先将系统的 YUM 仓库源换为国内源,不然可能会出现下载时间过长的情况,可以通过下方命令进行查看
yum repolist enabled
具体操作步骤请看我上一篇文章:渗透靶场环境准备 CentOS 7 配置 - 更换 YUM 镜像源
执行下方命令,下载 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 以及相关依赖
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"
]
}
执行下方命令,启动 docker,并将 docker 设置为开机自启动
systemctl start docker
# 启动 docker
systemctl enable docker
# 设置 docker 开机自启动
systemctl restart docker
# 重启 docker
利用 docker 命令抓取靶场镜像
docker pull infoslack/dvwa
# 抓取 dvwa 靶场
docker pull acgpiano/sqli-labs
# 抓取 sqli-labs 靶场
docker pull c0ny1/upload-labs
# 抓取 upload-labs 靶场
抓取镜像的时候会比较久,建议整一杯茶边喝边等 ( •̀ ω •́ )✧
查看下载好的镜像
docker images
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 类似
执行命令
查看 docker 容器是否创建
docker ps
靶场访问方式为:[IP地址]:[映射端口号]
浏览器访问: [IP地址]:9001
点击 “Create / Reset Database” 进行初始化
点击完后会出现下图内容,此时页面会自动跳转,如果不自动跳转的话,可点击 “login” 进行手动跳转
出现界面则环境初始化成功,初始账户密码为 admin/password
当然,可以通过密码爆破的方式把账户密码弄出来 (~ ̄▽ ̄)~
登录后的页面如下图
浏览器访问: [IP地址]:9002
点击 “Setup/reset Database for labs” 创建环境,出现下图界面即创建成功
靶场界面如下图
浏览器访问: [IP地址]:9003
该靶场默认并没有上传目录文件,需要我们点击 “清空上传文件” 按钮进行创建
至此,靶场环境就已经部署好了,之后的使用,就直接开启虚拟机,等待终端显示IP地址,然后通过 [IP地址]:[映射端口号] 进行访问即可,基本不需要登录到 CentOS 7 虚拟机内,如果靶场坏了的话,直接通过靶场的重置按钮一键恢复即可。接下来介绍如何进入 docker 容器内,查看靶场源代码,如果自己觉得不需要这个操作,可直接跳过。
docker exec -it [容器IP或容器名称] /bin/sh
# 容器ID 和 容器名称 可以通过命令 docker ps 查询得到
exit
# 退出 docker 容器
举例:DVWA 靶场
docker cp [宿主机文件路径] [容器IP或容器名称]:[容器路径]
# 将文件复制进 docker 容器内,
# 容器内路径如果不记得的话,直接整到 / 目录,复制进去后在进入容器慢慢找
docker cp [容器IP或容器名称]:[容器文件路径] [宿主机文件保存路径]
# 将文件 docker 容器内复制出来
# 宿主机文件保存路径建议直接 . 代替,“.” 表示当前目录,复制到当前目录下
举例:DVWA 靶场
将 anaconda-ks.cfg 文件复制到 dvwa 容器内
将 dvwa 容器内的 run.sh 文件复制到宿主机