搭建高效攻防靶场vulfocus与Docker仓库管理实战:从听说到入门系列
搭建高效攻防靶场vulfocus与Docker仓库管理实战:从听说到入门系列
vulfocus 简介
vulfocus,作为一款前沿的漏洞集成平台,它巧妙地将多种最新的CVE漏洞环境封装于Docker容器之中,便于部署与操作,成为提升安全实战技能的理想靶场。用户既可选择在本地VMware环境中亲手搭建,享受从零到一的实践乐趣,亦可直接接入云端环境,快速启动测试。
谈及同类工具,vulhub同样以其丰富的漏洞环境著称,但侧重点略有不同,它汇聚了更多历史老漏洞,为回顾与学习经典案例提供了宝贵资源。相比之下,vulfocus虽在数量上略显精简,却专注于收录最新威胁,紧贴安全前沿。因此,在追求实战时效性的考量下,选择vulfocus无疑是一个明智之举。
此次尝试部署vulfocus,不仅是对该平台的初次探索,也是个人Docker技能的一次实战复习。在VMware虚拟机的支持下,我将一步步搭建起这个强大的漏洞靶场,期待在实战中深化对Docker技术的理解与应用。
拉取vulfocus镜像
docker pull vulfocus/vulfocus:latest
拉取完成
创建容器
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="xxx@xxx.com" -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="xxx@xxx.com" 为邮箱账号 -e EMAIL_HOST_PASSWORD="xxxxxxxx 为邮箱密码 默认账户密码为 admin/admin。
网上教程纷繁,往往直接复制步骤,但关键细节不容忽视。在部署vulfocus时,除必设的端口映射(80:80)及VUL_IP外,其余环境变量可按需省略。VUL_IP设定尤为关键,需通过宿主机执行ifconfig查找docker0网桥IP并正确配置。执行命令后,将生成专属容器ID,标志着容器创建成功。,如
docker ps -a # 查看容器进程
docker start 容器id # 启动服务
浏览器访问你自己配置的端口,我的配置是127.0.0.1:9999,输入账号密码,admin/admin
一键同步即可,这里有往年很多已经泄露的漏洞复现题目,拉取镜像之后就可以直接本地访问了,不需要联网也可以进行渗透测试
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
可以启动一个系统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 [可选参数] 镜像名 [向启动容器中传入的命令]
或者我们可以启动一个网站docker run -dp 8080:80 --name docker-test docker/getting-started
http://localhost:8080/
使用交互式容器
上面我们成功将镜像变成了容器,但上述命令中我们加入了-d,让容器在后台运行了。下面我们就来讲如何和正在运行的容器进行交互。
查看容器
# 查看当前所有正在运行的容器
docker ps
# 查看当前所有容器
docker ps -a
# 使用过滤器
docker ps -f name=指定的名字
# 显示两个上次创建的容器
docker ps -n 2
# 显示最新创建的容器(包括所有状态)
docker ps -l
# 仅显示IP
docker ps -q
# 显示容器大小
docker ps -s
启动和关闭容器
# 停止容器
docker container stop 容器名/容器id
# 可简写为
docker stop 容器名/容器id
# 强制关闭容器
docker container kill 容器名称/容器id
#简写
docker kill 容器名称/容器id
# 启动容器
docker container start 容器名称/容器id
#简写
docker start 容器名称/容器id
如果我们成功启动或者关闭一个容器的话,会返回容器名或者容器id
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
删除容器
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
查看自己打包的镜像
docker images
推送到docker hub
推送格式:docker push 注册名称 / 镜像名称 : 标签
docker push xiaoyuss/my-demo:latest
等待上传完成,末尾latest其实就是一个tagname,用于区分不同版本的镜像,重复会有提示,如下图所示:
「注意」: 如果遇到push超时,可重复执行尝试。
验证一下
docker inspect xiaoyuss/my-demo:latest
「docker hub检查是否push成功」
如出现上图,说明push成功了!
使用tag命令对最新镜像打tag
docker tag local-image:tagname new-repo:tagname
docker push new-repo:tagname
举例
docker tag xiaoyus/my-demo 注册账号/镜像名称:newtag
网友如何使用该镜像?
搜索镜像
docker search xiaoyuss/my-demo
拉取镜像
docker pull xiaoyuss/my-demo:latest
启动镜像
docker run -d --name my-demo -p 8006:8006 xiaoyuss/my-demo
docker ps -a #找到刚刚启动的容器id
docker start 84efffc1658e # 启动即可,如果是web应用程序,此时应该就可以直接本地访问刚刚的配置的8006端口了
文章参考: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与Docker仓库管理实战:从听说到入门系列的更多相关文章
- 【Microsoft Azure 的1024种玩法】二.基于Azure云平台的安全攻防靶场系统构建
简介 本篇文章将基于在Microsoft Azure云平台上使用Pikachu去构建安全攻防靶场,Pikachu使用世界上最好的语言PHP进行开发,数据库使用的是mysql,因此运行Pikachu需要 ...
- Docker 仓库管理
仓库 ( registry ) 是一个用来存放镜像的地方,当我们执行 docker pull centos 去拉取 centos 镜像时,默认是从 Docker Hub 这个公共仓库来拉取的: 对于企 ...
- Android群英传神兵利器读书笔记——第一章:程序员小窝——搭建高效的开发环境
1.1 搭建高效的开发环境之操作系统 1.2 搭建开发环境之高效配置 基本环境配置 基本开发工具 1.3 搭建程序员的博客平台 开发者为什么要写作 写作平台 第三方博客平台 自建博客平台 开发论坛 1 ...
- [第十一篇]——Docker 仓库管理之Spring Cloud直播商城 b2b2c电子商务技术总结
Docker 仓库管理 仓库(Repository)是集中存放镜像的地方.以下介绍一下 Docker Hub.当然不止 docker hub,只是远程的服务商不一样,操作都是一样的. Docker H ...
- Docker学习(五)——Docker仓库管理
Docker仓库管理 仓库(Repository)是集中存放镜像的地方. 1.Docker Hub 目前Docker官方维护了一个公共仓库Docker Hub.大部分需求都可以通过 ...
- Docker虚拟化实战学习——基础篇(转)
Docker虚拟化实战学习——基础篇 2018年05月26日 02:17:24 北纬34度停留 阅读数:773更多 个人分类: Docker Docker虚拟化实战和企业案例演练 深入剖析虚拟化技 ...
- s11 Docker+DevOps实战--过程和工具
开发人员本地提交代码,本地使用容器模拟生产环境测试,测试通过提交到git master 分支,就会触发pipeline执行集成构建.集成工具: gitlab-vi,travis,或Jenkins.自动 ...
- Docker下实战zabbix三部曲之一:极速体验
对于想学习和实践zabbix的读者来说,在真实环境搭建一套zabbix系统是件费时费力的事情,本文内容就是用docker来缩减搭建时间,目标是让读者们尽快投入zabbix系统的体验和实践: 环境信息 ...
- 搭建一个免费的,无限流量的Blog----github Pages和Jekyll入门
喜欢写Blog的人,会经历三个阶段. 第一阶段,刚接触Blog,觉得很新鲜,试着选择一个免费空间来写. 第二阶段,发现免费空间限制太多,就自己购买域名和空间,搭建独立博客. 第三阶段,觉得独立博客的管 ...
- Docker 监控实战
如今,越来越多的公司开始使用 Docker 了,现在来给大家看几组数据: 2 / 3 的公司在尝试了 Docker 后最终使用了它 也就是说 Docker 的转化率达到了 67%,而转化市场也控制在 ...
随机推荐
- PHP7新特性之类型声明
今天我在这里总结下PHP7主要的新特性. 1.类型声明 做过php开发的小伙伴们都知道,php7以前的版本变量是不需要声明类型的,函数返回值也是不需要声明类型的,总之,在我们的脑海中就没有这么回事.可 ...
- 移动web开发适配秘籍Rem
目录 移动web开发的特点 Rem 布局适配原理 Media Query(媒体查询) scss 工程使用函数计算 JS动态获取屏幕的宽度 直接将html 的 font-size 设置成 100px 移 ...
- C# RSA非对称加密、解密及格式转换
前言 本文主要介绍如何使用.Net自带API结合BouncyCastle类库实现RSA加密和解密,密钥生成和密钥格式转换. 一.RSA介绍 RSA加密算法是1977年由Ron Rivest.Adi S ...
- PointNet笔记
可能遇到的问题 在windows上运行pointnet的代码时,可能会遇到一些问题: 1.比如提示OSError: no file with expected extension, 这是因为可视化的s ...
- SUM-ACM天梯赛
第一次天梯赛: B-B:孵化小鸡 题解:二进制枚举所有可能性,一个一个枚举出来,@离散数学,真值表. 题目如下: 二进制枚举代码如下 点击查看代码 #include <bits/stdc++.h ...
- odoo 开发入门教程系列-基本视图
在上一章中已经看到,odoo能够为给定模型生成默认视图.实际上,默认视图对于业务应用程序来说是不可接受的.相反,我们至少应该以逻辑的方式组织各个字段. 视图是在带有操作和菜单的XML文件中定义的.它们 ...
- Python 基于xml.etree.ElementTree实现XML对比
测试环境 Python 3.6 Win10 代码实现 #!/usr/bin/env python 3.4.0 #-*- encoding:utf-8 -*- __author__ = 'shouke' ...
- 云端IDE如何重定义开发体验
豆包 MarsCode 是一个集成了AI功能的编程助手和云端IDE,旨在提高开发效率和质量.它支持多种编程语言和IDE,提供智能代码补全.代码解释.单元测试生成和问题修复等功能,同时具备AI对话视图和 ...
- Pulsar客户端消费模式揭秘:Go 语言实现 ZeroQueueConsumer
前段时间在 pulsar-client-go 社区里看到这么一个 issue: import "github.com/apache/pulsar-client-go/pulsar" ...
- 【杂谈】JPA乐观锁改悲观锁遇到的一些问题与思考
背景 接过一个外包的项目,该项目使用JPA作为ORM. 项目中有多个entity带有@version字段 当并发高的时候经常报乐观锁错误OptimisticLocingFailureException ...