浅谈云安全之反向获取dockerfile

admin 2024年2月13日23:10:45评论16 views字数 1760阅读5分52秒阅读模式

本文主要讲几个docker利用小技巧,以及平时应急响应或者渗透测试中可能遇到的场景。

在攻防中,拿下的机器可能有很多镜像,此时如果将这些镜像的构建信息还原,获取到了dockerfile中的敏感信息,那其实又多了一个突破口。

我们这里说几种办法

docker工具命令

docker images  #用于查看有哪些镜像

浅谈云安全之反向获取dockerfile

docker history 镜像名  #查看指定镜像的创建历史

这里我们用复现的环境镜像做演示

docker history rinchat/test:CVE-2022-0492
浅谈云安全之反向获取dockerfile

可以看到一部分命令,但是并不完整,可以添加--no-trunc参数来显示完整的提交记录。

浅谈云安全之反向获取dockerfile
docker inspect 镜像名  #获取指定镜像的元数据
浅谈云安全之反向获取dockerfile
docker镜像元数据基础概念
在使用命令行或者dockerfile创建镜像的时候,可以指定这些元数据,并将它们保存在docker registry中,我们docker inspect时一般读取的就是这个元数据,元数据又包括镜像名称和标签,镜像作者,环境变量,命令和参数等

dfimage

这个工具是由alpine从原项目whaler重新打包的一个镜像。

https://hub.docker.com/r/alpine/dfimage

先创建一个快捷方式,方便后续调用

docker pull alpine/dfimagealias dfimage="docker run -v /var/run/docker.sock:/var/run/docker.sock alpine/dfimage"然后按照下面的命令就行dfimage 镜像名或者dfimage -sV=$dockerclientversion 镜像名

docker version 查看docker版本,然后我们看client这里的api version即可,这里的原工具是1.36,代表的api版本就是1.36,这里可以根据自己情况做调整。

浅谈云安全之反向获取dockerfile

亲测不加这个标签也是可以的

浅谈云安全之反向获取dockerfile

加了标签是这样

浅谈云安全之反向获取dockerfile

dive

项目地址:

https://github.com/wagoodman/dive

dive主要是按层分析镜像内容,并指出每一层的变化。

先创建一个快捷方式

alias dive="docker run -it -v /var/run/docker.sock:/var/run/docker.sock --rm wagoodman/dive"

dive 镜像名

输出如下,左边是镜像和layer信息,右边是当前选中的镜像layer对应的文件磁盘文件信息。

浅谈云安全之反向获取dockerfile

然后文字颜色也代表不同含义

红色代表删除的文件

绿色代表新增的文件

黄色代表被修改的文件

dive并不能直接获取dockerfile文件,只是作为镜像分析工具

但是他作为分析工具也有分析工具的好处,上图中我们在左边会看到layer的层ID,这个id其实也有用处

当我们使用docker save将镜像保存后,去进行解压,对应的去找,他其实就类似于一层一层的保存在文件夹里。

先保存成压缩包,然后解压

docker save -o test.tar 镜像名tar -xvf test.tarcat f5f34237d84300cbbf31502ba31964cb34eeffe369665a56bc492b6fbca674f3/json
浅谈云安全之反向获取dockerfile
浅谈云安全之反向获取dockerfile

我们看到上面的那个图,他的id是f5开头的,我们直接去看其中的json文件,里面就是环境变量啥的信息。

Dedockify

这个工具用法有点类似于dfimage,只不过更加精简一些

添加快捷方式alias dedockify="docker -v /var/run/docker.sock:/var/run/docker.docker.sock --rm mrhavens/desockify"然后需要获取镜像iddocker images然后dedockify 镜像id
浅谈云安全之反向获取dockerfile

如果是通过docker-compose构建的该怎么获取他的docker-compose文件,这里通过我的灯塔构建来做演示。

可以

docker inspect | grep com.docker.compose
浅谈云安全之反向获取dockerfile

然后就会显示出所在的文件夹以及文件名,以上手法其实更偏向于后渗透利用。

其实也有更多的思路大家可以慢慢思考,希望能给大家带来帮助。

原文始发于微信公众号(Crystal Equation):浅谈云安全之反向获取dockerfile

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月13日23:10:45
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   浅谈云安全之反向获取dockerfilehttp://cn-sec.com/archives/2489225.html

发表评论

匿名网友 填写信息