0x00 docker简介

把原来的笔记整理了一下,结合前几天的一个漏洞,整理一篇简单的操作文档,希望能帮助有缘人。

docker是一个开源的应用容器引擎,开发者可以打包自己的应用到容器里面,然后迁移到其他机器的docker应用中,可以实现快速部署。如果出现的故障,可以通过镜像,快速恢复服务。dockerde 原理是利用Linux内核虚拟机化技术(LXC),提供轻量级的虚拟化,以便隔离进程和资源。LXC不是硬件的虚拟化,而是Linux内核的级别的虚拟机化,相对于传统的虚拟机,节省了很多硬件资源。


0x01 docker的安装

安装的相关的文档可以在https://docs.docker.com/进行查找里面有各种系统版本的安装方法,这里以debian为例,其他的类似。

  1. 更新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
 
1
FROM vulhub/tomcat:8.5.19
2

3
MAINTAINER test
4

5
RUN chmod a+x /usr/local/tomcat/bin/*.sh
6

7
COPY info.war /usr/local/tomcat/webapps/info.war
8

9
EXPOSE 8080
10
EXPOSE 8009

docker-comfile.yml

webapp:
build: .
ports:
- "80:8080"
-"8009:8009"
 
1
webapp:
2
    build: .
3
    ports:
4
        - "80:8080"
5
        -"8009:8009"

执行docker-compose up -d

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


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

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

欢迎关注我的公众号,等你


docker漏洞复现环境搭建的更多相关文章

  1. CVE-2018-1111漏洞复现-环境搭建与dhcp命令注入

    0×01 前言 2018年5月,在Red Hat Enterprise Linux多个版本的DHCP客户端软件包所包含的NetworkManager集成脚本中发现了命令注入漏洞(CVE-2018-11 ...

  2. KALI搭建Docker+Vulhub漏洞复现环境

    在学习网络安全的过程中,少不了的就是做漏洞复现,而漏洞复现一般比较常用的方式就是使用docker-vulhub进行环境搭建,我近期也遇到了这个问题,但是网上的教程特别混乱,根本起不到帮助作用,即使有可 ...

  3. 漏洞复现环境集锦-Vulhub

    0x01 Vulhub简介 Vulhub是一个面向大众的开源漏洞靶场,无需docker知识,简单执行两条命令即可编译.运行一个完整的漏洞靶场镜像. 0x02 安装 # 安装pip curl -s ht ...

  4. Ubuntu 基于Docker的TensorFlow 环境搭建

    基于Docker的TensorFlow 环境搭建 基于(ubuntu 16.04LTS/ubuntu 14.04LTS) 一.docker环境安装 1)更新.安装依赖包 sudo apt-get up ...

  5. EOS Dapp开发(1)-基于Docker的开发环境搭建

    随着EOS主网的上线,相信基于EOS的Dapp开发会越来越多,查阅了很多资料相关的开发资料都不是很多,只能自己摸索,按照网上仅有的几篇教程,先git clonehttps://github.com/E ...

  6. 基于node/mongo的App Docker化测试环境搭建

    搭建步骤: 1.宿主机环境  ubuntu 14.4宿主机环境(云主机): 安装wget与curl(sudo apt-get install wget curl)2.安装Docker (wget -q ...

  7. docker+mysql+zabix-server环境搭建

    本次使用docker搭建zabbix的组合是mysql+docker+zabix-server 测试环境为:1.操作系统版本为:centos7.5 2.docker版本为:1.13.1 3 mysql ...

  8. Docker Java+Tomcat 环境搭建

    软件环境:jdk.tomcat.docker.centos.虚拟机 首先,您要准备一个 CentOS 的操作系统,虚拟机也行.总之,可以通过 Linux 客户端工具访问到 CentOS 操作系统就行. ...

  9. docker+Battery Historian 环境搭建(电量分析)

    docker 安装(windows) 1.  下载 https://docs.docker.com/docker-for-windows/install/  和 安装和添加环境变量(...) 2. 安 ...

随机推荐

  1. javascript arcgis 取区域中心点

    javascript arcgis 取区域中心点 //graphic是绘制完多边形之后返回的对象 //获得多边形的中心点坐标 var centerPoint=graphic.geometry.getE ...

  2. JAVA XML格式化输出

    import org.apache.xml.serialize.OutputFormat; import org.apache.xml.serialize.OutputFormat; import o ...

  3. Flutter - 自定义Dialog弹窗

    ------------恢复内容开始------------ Flutter - 自定义Dialog弹窗 应用场景:app系统版本升级弹窗,系统退出登录弹窗,首页广告弹窗,消息中心弹窗,删除文件弹窗等 ...

  4. pyqy5 程序实例1

    import sys from PyQt5.QtWidgets import QMainWindow,QApplication from PyQt5.QtGui import QIcon class ...

  5. D. The Wu 解析(思維、二進位運算)

    Codeforce 1017 D. The Wu 解析(思維.二進位運算) 今天我們來看看CF1017D 題目連結 題目 略,請直接看原題 前言 官方解答實在看不懂...之後還記得的話再補那個做法吧 ...

  6. Vue.js 学习笔记之六:构建更复杂的组件

    在掌握了如何构建与编译 Vue 组件的基础知识之后,接下来就可以试着来构建一些更具有实际用处的复杂组件了.为了赋予组件更具实用性的后面,首先要做的就是让这些组件具备监听用户自定义事件的能力,并且允许用 ...

  7. Luogu P2447 [SDOI2010]外星千足虫

    题意 给定 \(n\) 个变量和 \(m\) 个异或方程,求最少需要多少个才能确定每个变量的解. \(\texttt{Data Range:}1\leq n\leq 10^3,1\leq m\leq ...

  8. Java学习的第十一天

    1. 方法递归 2.this()不理解和类型传递不太理解 3.明天学习完第四章

  9. model的基础操作

    1.创建表 1.1 Meta源信息 from django.db import models class UserInfo(models.Model): username = models.CharF ...

  10. 3、编程语言与Python介绍

    一 引子 基于上一章所学,有了计算机硬件,再在硬件之上安装好操作系统,我们就有了一个应用程序的运行平台,我们接下来的任务就是学习如何使用某款编程语言来开发应用程序. 本章的主题是先了解一下编程语言,然 ...