docker漏洞复现环境搭建
0x00 docker简介
docker是一个开源的应用容器引擎,开发者可以打包自己的应用到容器里面,然后迁移到其他机器的docker应用中,可以实现快速部署。如果出现的故障,可以通过镜像,快速恢复服务。dockerde 原理是利用Linux内核虚拟机化技术(LXC),提供轻量级的虚拟化,以便隔离进程和资源。LXC不是硬件的虚拟化,而是Linux内核的级别的虚拟机化,相对于传统的虚拟机,节省了很多硬件资源。
0x01 docker的安装
安装的相关的文档可以在https://docs.docker.com/进行查找里面有各种系统版本的安装方法,这里以debian为例,其他的类似。
- 更新apt索引
apt-get update

2.更新所需组件
apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg2 \
software-properties-common

3.增加官方 GPG key:
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

4.增加官方稳定源
add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/debian \
$(lsb_release -cs) \ stable"

5.再次更新一下apt索引,因为你刚才加入了新的源,需要更新后才能生效。
apt-get update

6.安装docker
apt-get install docker-ce docker-ce-cli containerd.io

7.测试安装是否成功
docker run hello-world

0x02 docker的基本操作命令
docker的相关的命令一般会在命令的开始加上docker这个词。
1.docker search 镜像名
可以以关键字的方式在docker hub上进行检索


2.docker pull 获取相关的镜像

3.docker images查看相关的镜像
其中TAG是容器的标签,用来区分不同的容器,如果不填写的话默认是latest,如果本地不存在latest版本则会自行下载。
IMAGE ID是镜像的16位短ID

4.容器启动 docker run
docker run -itd –-name 容器名称 -p 主机端口:容器端口 镜像名称:标签 /bin/bash,下面这一长串是容器的完整ID。

5.查看进程 docker ps 列出当前正在运行的容器。

6.容器的启停
docker stop/start 容器名/ID
停止或启动容器,若是填写容器名则要全写上去,如果用的是ID,这里的ID并不需要写完整的ID或者16位短ID,只需要能与其他容器区分开即可,就算你只写第一个字符都是可以的,只要能区分开。



7.进入容器
docker attach 容器名/ID

或docker exec -it 容器名/ID bin/bash

8.文件拷贝
docker cp 主机中的文件目录 容器名:容器中的目录。将文件从主机拷贝到容器中


这些docker的基本命令足够可以进行漏洞环境的搭建了。
0x03 漏洞复现环境搭建
建立一个漏洞复现的环境,其实和建立一个应用的步骤是类似的。只是漏洞复现环境是存在漏洞的应用而已。
对环境的搭建比较方便的方式是通过dockerfile结合docker-compose
Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于拉取的基础镜像并最终创建一个新的镜像,通过Dockerfile我们可以创建一个你需要的镜像,里面是包含了你要安装的软件,相当于是提前定制好要安装的拓展,执行的命令等,然后一键执行,极大地简化操作流程。Dockerfile由4部分组成:基础镜像信息、维护者信息、镜像操作指令和容器启动指令。
Compose是用来定义和运行一个或多个容器应用的工具。Compose是使用YML文件来定义多容器应用的,它还会用docker-compose up命令把完整的应用运行起来。
这里以前几天刚刚公布的CVE-2020-1938为例,简单编写,dockerfile如下:
FROM vulhub/tomcat:8.5.19
MAINTAINER test
RUN chmod a+x /usr/local/tomcat/bin/*.sh
COPY info.war /usr/local/tomcat/webapps/info.war
EXPOSE 8080
EXPOSE 8009
FROM vulhub/tomcat:8.5.19
MAINTAINER test
RUN chmod a+x /usr/local/tomcat/bin/*.sh
COPY info.war /usr/local/tomcat/webapps/info.war
EXPOSE 8080
EXPOSE 8009
docker-comfile.yml
webapp:
build: .
ports:
- "80:8080"
-"8009:8009"
webapp:
build: .
ports:
- "80:8080"
-"8009:8009"
执行docker-compose up -d

通过映射的80,可以直接访问搭建的docker应用

利用相关的poc进行漏洞验证

docker在漏洞复现的环境搭建上,真的是特别方便。更多的命令细节,可以使用help及官方文档:
https://docs.docker.com/
欢迎关注我的公众号,等你

docker漏洞复现环境搭建的更多相关文章
- CVE-2018-1111漏洞复现-环境搭建与dhcp命令注入
0×01 前言 2018年5月,在Red Hat Enterprise Linux多个版本的DHCP客户端软件包所包含的NetworkManager集成脚本中发现了命令注入漏洞(CVE-2018-11 ...
- KALI搭建Docker+Vulhub漏洞复现环境
在学习网络安全的过程中,少不了的就是做漏洞复现,而漏洞复现一般比较常用的方式就是使用docker-vulhub进行环境搭建,我近期也遇到了这个问题,但是网上的教程特别混乱,根本起不到帮助作用,即使有可 ...
- 漏洞复现环境集锦-Vulhub
0x01 Vulhub简介 Vulhub是一个面向大众的开源漏洞靶场,无需docker知识,简单执行两条命令即可编译.运行一个完整的漏洞靶场镜像. 0x02 安装 # 安装pip curl -s ht ...
- Ubuntu 基于Docker的TensorFlow 环境搭建
基于Docker的TensorFlow 环境搭建 基于(ubuntu 16.04LTS/ubuntu 14.04LTS) 一.docker环境安装 1)更新.安装依赖包 sudo apt-get up ...
- EOS Dapp开发(1)-基于Docker的开发环境搭建
随着EOS主网的上线,相信基于EOS的Dapp开发会越来越多,查阅了很多资料相关的开发资料都不是很多,只能自己摸索,按照网上仅有的几篇教程,先git clonehttps://github.com/E ...
- 基于node/mongo的App Docker化测试环境搭建
搭建步骤: 1.宿主机环境 ubuntu 14.4宿主机环境(云主机): 安装wget与curl(sudo apt-get install wget curl)2.安装Docker (wget -q ...
- docker+mysql+zabix-server环境搭建
本次使用docker搭建zabbix的组合是mysql+docker+zabix-server 测试环境为:1.操作系统版本为:centos7.5 2.docker版本为:1.13.1 3 mysql ...
- Docker Java+Tomcat 环境搭建
软件环境:jdk.tomcat.docker.centos.虚拟机 首先,您要准备一个 CentOS 的操作系统,虚拟机也行.总之,可以通过 Linux 客户端工具访问到 CentOS 操作系统就行. ...
- docker+Battery Historian 环境搭建(电量分析)
docker 安装(windows) 1. 下载 https://docs.docker.com/docker-for-windows/install/ 和 安装和添加环境变量(...) 2. 安 ...
随机推荐
- Business Partner - 供应商与客户的集成 - S/4HANA(2)
配置 BP配置 激活BP的PPO请求 Cross-Application Components->Master Data Synchronization->Master Data Sync ...
- 选择SaaS平台的那些事
将近一年多没有更新博客和自己的订阅号.除了本身有点懒之外,也有幸在上半年花了一些时间考出了CISSP.最近也在研究云平台相关的一些课题. 写这篇文章本身是因为在工作中经常有IT乃至业务的同事会问及企业 ...
- Linux命令之Hash缓存表
Hash缓存表 系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的路径记录到hash表中,当再次使用该命令时,shell解释器首先会查看hash表,存在将 ...
- java 保留小数点后指定位数四种方法
1 package com.itheima_01; 2 3 import java.math.BigDecimal; 4 import java.text.DecimalFormat; 5 impor ...
- matlab cvx工具箱解决线性优化问题
题目来源:数学建模算法与应用第二版(司守奎)第一章习题1.4 题目说明 作者在答案中已经说明,求解上述线性规划模型时,尽量用Lingo软件,如果使用Matlab软件求解,需要做变量替换,把二维决策变量 ...
- git学习(二) git的文件状态
git的文件状态 用于查看git的状态 git status 用于git文件的删除操作 git rm 如果只是 git rm --cache 仅删除暂存区里的文件: 如果不加--cache 会删除工作 ...
- this()与super()
1. 构造器中第一行默认是super(),一旦直接父类的构造器中没有无参的,那么必须显式调用父类的某个有参构造. 2. 构造器中第一行的super()可以换成this(),但是this()和super ...
- PHP实现Bitmap的探索 - GMP扩展使用
原文地址:https://blog.fanscore.cn/p/22/ 一.背景 公司当前有一个用户群的系统,核心功能是根据不同的条件组去不同的业务线中get符合条件的uid列表,然后存到redis中 ...
- 结对项目的PS表格
PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 60 80 Estimate 估计这个任务需要多少时间 10 ...
- Win32之创建线程
0x01.什么是线程? 1.线程是附属在进程上的执行实体,是代码的执行流程 进程 本身是空间上的概念,代表4GB的虚拟内存,线程代表着时间概念,也就是说,线程是当前运行的代码 在某个时间点只能有一段代 ...