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. sql分页 一条语句搞定

    select top 每页条数 * from ( SELECT ROW_NUMBER() OVER (ORDER BY id desc) AS RowNumber,* FROM Article  条件 ...

  2. 网络爬虫养成记(第一天)——安装Scrapy

    古人云:工欲善其事,必先利其器.在网络爬虫中,Scrapy无疑是一把利器,那么,今天我们来谈谈Scrapy的安装. 幸运的是,Scrapy已经支持Python3.4+了,也就是说,我们可以在pytho ...

  3. java: 非法字符: '\ufeff'

    错误问题记录: Error:(1, 1) java: 非法字符: '\ufeff' Error:(1, 1) 错误: 需要class, interface或enum报错 问题发生时因为编码问题导致,如 ...

  4. css和js实现硬件加速渲染自定义滚动条

    听别人说用CSS的变换来实现渲染有硬件加速的效果,看到很多大网站都开始陆续使用上了,我也来说说怎么做,我这边实现的滚动条有自然滚动效果,看起来比较自然,说的再多不如直接写,让我们开始吧! 我们需要自己 ...

  5. drf Serializer使用

    drf序列化 在前后端不分离的项目中,可以使用Django自带的forms组件进行数据验证,也可以使用Django自带的序列化组件对模型表数据进行序列化. 那么在前后端分离的项目中,drf也提供了数据 ...

  6. D. Regular Bridge 解析(思維、圖論)

    Codeforce 550 D. Regular Bridge 解析(思維.圖論) 今天我們來看看CF550D 題目連結 題目 給你一個\(k\le100\),請構造出一個至少有一個Bridge的,每 ...

  7. tp3.2,php5使用PHPExcel将数据导出至Excel

    安装类库 从GitHub上下载PHPExcel类库 地址:https://github.com/PHPOffice/PHPExcel public function checkexcel($id){ ...

  8. MYSQL 那些事

    1.一条update语句 1.先通过引擎找到对应的行数据,并加锁 2.对行数据进行修改并调用引擎接口修改这条数据,然后释放锁(此时并没有把数据在磁盘上做出修改) 3.redo log在内存中生成这条u ...

  9. 从原生web组件到框架组件源码(一)

    温馨提醒,当你觉得看我写的很乱的时候,就对了,那是因为我查阅了大量的资料提取出来的,因为有点东西不太理解,所以你会感觉有的部分重复了,也不是重复,只是后面对前面的内容进行梳理了一些,需要耐心的看到最后 ...

  10. 基于PHP实现短信验证码接口的方法

    步骤: 1.登录荣联运通讯注册获取ACCOUNT SID.AUTH TOKEN.Rest URL(生产).AppID(默认): 2.注册测试用手机号码(先注册测试号码方可使用): 3.下载demo示例 ...