首页 > 其他分享 >搭建高效攻防靶场vulfocus与Docker仓库管理实战:从听说到入门系列

搭建高效攻防靶场vulfocus与Docker仓库管理实战:从听说到入门系列

时间:2024-07-04 23:52:41浏览次数:1  
标签:容器 vulfocus image xxx 靶场 镜像 docker Docker

搭建高效攻防靶场vulfocus与Docker仓库管理实战:从听说到入门系列

vulfocus 简介

vulfocus,作为一款前沿的漏洞集成平台,它巧妙地将多种最新的CVE漏洞环境封装于Docker容器之中,便于部署与操作,成为提升安全实战技能的理想靶场。用户既可选择在本地VMware环境中亲手搭建,享受从零到一的实践乐趣,亦可直接接入云端环境,快速启动测试。

谈及同类工具,vulhub同样以其丰富的漏洞环境著称,但侧重点略有不同,它汇聚了更多历史老漏洞,为回顾与学习经典案例提供了宝贵资源。相比之下,vulfocus虽在数量上略显精简,却专注于收录最新威胁,紧贴安全前沿。因此,在追求实战时效性的考量下,选择vulfocus无疑是一个明智之举。

此次尝试部署vulfocus,不仅是对该平台的初次探索,也是个人Docker技能的一次实战复习。在VMware虚拟机的支持下,我将一步步搭建起这个强大的漏洞靶场,期待在实战中深化对Docker技术的理解与应用。

拉取vulfocus镜像

docker pull vulfocus/vulfocus:latest
image-20240704215421795
image-20240704215421795

拉取完成

image-20240704221050504
image-20240704221050504

创建容器

docker create -p 80:80 -v /var/run/docker.sock:/var/run/docker.sock  -e VUL_IP=xxx.xxx.xxx.xxx -e EMAIL_HOST="xxx.xxx.xxx" -e EMAIL_HOST_USER="[email protected]" -e EMAIL_HOST_PASSWORD="xxxxxxxx" vulfocus/vulfocus

-v /var/run/docker.sock:/var/run/docker.sock 为 docker 交互连接。 -e DOCKER_URL 为 Docker 连接方式,默认通过unix://var/run/docker.sock 进行连接,也可以通过 tcp://xxx.xxx.xxx.xxx:2375 进行连接(必须开放 2375 端口)。

  • -v /vulfocus-api/db.sqlite3:db.sqlite3 映射数据库为本地文件。
  • -e VUL_IP=xxx.xxx.xxx.xxx 为 Docker 服务器 IP ,不能为 127.0.0.1。
  • -e EMAIL_HOST="xxx.xxx.xxx" 为邮箱SMTP服务器
  • -e EMAIL_HOST_USER="[email protected]" 为邮箱账号
  • -e EMAIL_HOST_PASSWORD="xxxxxxxx 为邮箱密码
  • 默认账户密码为 admin/admin。

网上教程纷繁,往往直接复制步骤,但关键细节不容忽视。在部署vulfocus时,除必设的端口映射(80:80)及VUL_IP外,其余环境变量可按需省略。VUL_IP设定尤为关键,需通过宿主机执行ifconfig查找docker0网桥IP并正确配置。执行命令后,将生成专属容器ID,标志着容器创建成功。,如

image-20240704222606783
image-20240704222606783
docker ps -a # 查看容器进程
docker start 容器id # 启动服务
image-20240704221841141
image-20240704221841141
浏览器访问你自己配置的端口,我的配置是127.0.0.1:9999,输入账号密码,admin/admin
image-20240704222033890
image-20240704222033890

一键同步即可,这里有往年很多已经泄露的漏洞复现题目,拉取镜像之后就可以直接本地访问了,不需要联网也可以进行渗透测试

image-20240704222021416
image-20240704222021416

docker基本操作

基础操作

获取当前所有的镜像

docker image ls
# 或者
docker images

拉取镜像

# 官方镜像
docker image pull 镜像名称
# 简写
docker pull 镜像名称
# 比如
docker pull ubuntu
# 指定版本
docker pull ubuntu:16.04
# 个人镜像
docker pull 仓库名称/镜像名称
#第三方仓库拉取
docker pull 第三方仓库地址/仓库名称/镜像名称
docker pull hub.c.163.com/libray/mysql:latest
(默认仓库名称为library,所有从官方获取镜像相当于·sudo docker image pull library/镜像名称·)

删除镜像

docker image rm 镜像名称或者镜像ID
docker rmi 镜像名称或者镜像ID
image-20240704162210232
image-20240704162210232

可以启动一个系统docker run -i -d -t --name=kali-test kalilinux/kali-rolling(这里我使用linux的一个发行版kali作为介绍) 或可以简写为docker run -idt --name=kali-test kalilinux/kali-rolling PS: 如果加载一个我们没有的镜像,docker会自动从官方仓库中进行拉去。

docker run [可选参数] 镜像名 [向启动容器中传入的命令]
image-20240704165205873
image-20240704165205873

或者我们可以启动一个网站docker run -dp 8080:80 --name docker-test docker/getting-started

image-20240704165120843
image-20240704165120843

http://localhost:8080/

image-20240704165253130
image-20240704165253130

使用交互式容器

上面我们成功将镜像变成了容器,但上述命令中我们加入了-d,让容器在后台运行了。下面我们就来讲如何和正在运行的容器进行交互。

查看容器

# 查看当前所有正在运行的容器
docker ps
# 查看当前所有容器
docker ps -a
# 使用过滤器
docker ps -f name=指定的名字
# 显示两个上次创建的容器
docker ps -n 2
# 显示最新创建的容器(包括所有状态)
docker ps -l
# 仅显示IP
docker ps -q
# 显示容器大小
docker ps -s
image-20240704170025573
image-20240704170025573

启动和关闭容器

# 停止容器
docker container stop 容器名/容器id
# 可简写为
docker stop 容器名/容器id

# 强制关闭容器
docker container kill 容器名称/容器id
#简写
docker kill 容器名称/容器id

# 启动容器
docker container start 容器名称/容器id
#简写
docker start 容器名称/容器id

如果我们成功启动或者关闭一个容器的话,会返回容器名或者容器id

image-20240704170655784
image-20240704170655784

Tips:stop和kill的区别::stop是比较优雅的关掉一个容器,类似我们正常退出一个软件,而kill是当一个进程出现意外无法正常关闭的时候,我们强行进行关闭,有点像我们使用任务管理器进行结束进程操作

操作后台容器

# 如果我只需要执行简单的一两条命令可以使用docker exec
# 执行单条命令 (-i: 启动并且保留交互式命令行; -t:作用是分配一个虚拟的终端; docker run )
docker exec -it 容器名或容器id 执行的命令
# 比如
docker exec -it kali-test whoami
# 用这种方法,我们还可以启动命令行,根据Linux的特性,系统程序会在/bin中,linux中常用的Shell有多个,其中大部分用的Linux默认的为bash
# 所以我们启动命令可以自行如下命令(除了/bin/bash外,linux一般还会带/bin/sh、/bin/rbash、/bin/dash等,具体区别可以自行百度)
docker exec -it 容器名或容器id /bin/bash
# 比如
docker exec -it kali-test /bin/bash
# 除了exec外还有attach可以使用,但它有个弊端,多终端启动attach后,都会会同步显示。如果有一个窗口阻塞了,那么其他窗口也无法再进行操作。
docker attach 容器名或容器id
# 比如
docker attach kali-test

image-20240704171757644
image-20240704171757644
image-20240704171916332
image-20240704171916332
image-20240704172315242
image-20240704172315242
image-20240704172329629
image-20240704172329629

删除容器

docker rm 容器名/容器id
# 例如
docker rm hellow-world

如果报错Error response from daemon: You cannot remove a running container 容器ID. Stop the container before attempting removal or force remove则代表这个容器已经启动,需要执行 docker stop 容器id,停止此容器。

容器制作成镜像

# 将容器制作成镜像
docker commit 容器名 镜像名
# 镜像打包备份(打包备份的文件会自动存放在当前命令行的路径下,如果想让保存的文件可以打开,可以加.tar后缀)
docker save -o 保存的文件名 镜像名
# 镜像解压
docker load -i 文件路径/备份文件

我们将打包备份的镜像可以通过网络发送到其他设备上,使用docker镜像解压即可直接使用你的环境

docker commit 容器id  上传的容器名称

本地终端登录hub帐号

docker login
image-20240704203343921
image-20240704203343921

查看自己打包的镜像

docker images
image-20240704203420969
image-20240704203420969

推送到docker hub

image-20240704203458788
image-20240704203458788

推送格式:docker push 注册名称 / 镜像名称 : 标签

docker push xiaoyuss/my-demo:latest

等待上传完成,末尾latest其实就是一个tagname,用于区分不同版本的镜像,重复会有提示,如下图所示:

image-20240704203551110
image-20240704203551110

「注意」: 如果遇到push超时,可重复执行尝试。

验证一下

docker inspect xiaoyuss/my-demo:latest
image-20240704203918618
image-20240704203918618

「docker hub检查是否push成功」

image-20240704203729629
image-20240704203729629

如出现上图,说明push成功了!

使用tag命令对最新镜像打tag

docker tag local-image:tagname new-repo:tagname
docker push new-repo:tagname

举例

docker tag xiaoyus/my-demo 注册账号/镜像名称:newtag
image-20240704204830242
image-20240704204830242

网友如何使用该镜像?

搜索镜像

docker search xiaoyuss/my-demo

拉取镜像

docker pull xiaoyuss/my-demo:latest
image-20240704203958908
image-20240704203958908

启动镜像

docker run -d --name my-demo -p 8006:8006 xiaoyuss/my-demo
docker ps -a #找到刚刚启动的容器id
docker start 84efffc1658e # 启动即可,如果是web应用程序,此时应该就可以直接本地访问刚刚的配置的8006端口了
image-20240704204339550
image-20240704204339550

文章参考:https://blog.csdn.net/csd_ct/article/details/121158165

https://blog.csdn.net/u013302168/article/details/121092209

https://blog.csdn.net/qq_39611230/article/details/108641842

原文:https://mp.weixin.qq.com/s/q2PozEUwfWtywqyyn7i0bw

标签:容器,vulfocus,image,xxx,靶场,镜像,docker,Docker
From: https://www.cnblogs.com/xiaoyus/p/18284926

相关文章

  • UI 自动化分布式测试 - Docker Selenium Grid
    Docker和 SeleniumGrid 的结合为分布式UI自动化测试提供了一种高效、可扩展且易于管理的方法。通过使用Docker容器化技术,测试环境的设置和配置变得更加简便和一致;而SeleniumGrid则允许在多个节点上并行运行分布式测试,从而大大提升测试的速度和覆盖范围。 分布......
  • Windows下Docker-desktop
    1、在Windows下安装Docker-desktop下载:https://github.com/tech-shrimp/docker_installer/releases/download/latest/docker_desktop_installer_windows_x86_64.exe2、安装:start/w"""docker_desktop_installer_windows_x86_64.exe"install--installat......
  • UI 自动化分布式测试 -Docker Selenium Grid
    Docker和 SeleniumGrid 的结合为分布式UI自动化测试提供了一种高效、可扩展且易于管理的方法。通过使用Docker容器化技术,测试环境的设置和配置变得更加简便和一致;而SeleniumGrid则允许在多个节点上并行运行分布式测试,从而大大提升测试的速度和覆盖范围。  ......
  • Red Hat Enterprise Linux 8.0安装Docker
        上回书说到,已经通过VMwareWorkstationPro安装了RedHat虚拟机,现在尝试一下是否可以在虚拟机中安装docker;一、前置条件 CentOS7内核版本需>=3.10; CentOS6.5或以上内核版本需>=2.6.32;安装docker前请查看服务器系统版本以及内核版本是否符合要求;cat/etc/......
  • 详解五种Docker容器的网络模式
    Docker网络设置了容器如何与其他容器和外部服务通信。为了获得网络访问,容器需要是Docker网络的一部分。容器可以通信的方式取决于它的网络连接。Docker提供了五种标准网络模式来执行核心网络功能:Bridge(桥接)Host(主机)Overlay(重叠)IPvLANMacvl......
  • 构建阿里云的centos7-docker镜像
    最近在项目中需要测试运维脚本,但是在网上都找不到可以模拟阿里云的centos7镜像,所以就自己构建了一个,跟大家分享下。构建平台:操作系统window11软件dockerdesktop工作目录:CentOS-Base.repo[base]name=CentOS-$releaseverenabled=1failovermethod=prioritybaseurl......
  • 【Docker安装】OpenEuler系统下部署Docker环境
    【Docker安装】OpenEuler系统下部署Docker环境前言一、本次实践介绍1.1本次实践规划1.2本次实践简介二、检查本地环境2.1检查操作系统版本2.2检查内核版本2.3检查yum仓库三、卸载Docker四、部署Docker环境4.1配置yum仓库4.2检查可用yum仓库......
  • jdk的Dockerfile构建
    JDKFROMcentos:[email protected]#时间更新RUN/bin/cp/usr/share/zoneinfo/Asia/Shanghai/etc/localtime\&&echo'Asia/Shanghai'>/etc/timezone#仓库源配置RUNrm-rf/etc/yum.repos.d/*.repo\&&curl......
  • Docker自定义网络的好处
    docker基础(19):Docker网络之自定义网络_docker创建自定义网络-CSDN博客docker0网络特点他是默认的域名访问不通(有些应用是需要配置域名,或许写死ip配置就不够灵活)–link域名通了,但是删除了又不行docker--link容器互联_dockerlink-CSDN博客 简单点说,自定义网络的好处是不用......
  • Docker top和stats区别
    dockertop需要指定容器,且不是动态显示容器资源使用情况dockerstats动态打印所有容器资源使用情况[root@localhost~]#dockertop--helpUsage:dockertopCONTAINER[psOPTIONS]DisplaytherunningprocessesofacontainerAliases:dockercontainertop,do......