容器环境检测方法总结

Bypass

共 1372字,需浏览 3分钟

 ·

2023-07-08 12:29

在渗透测试过程中,我们的起始攻击点可能在一台虚拟机里或是一个Docker环境里,甚至可能是在K8s集群环境的一个pod里,我们应该如何快速判断当前是否在容器环境中运行呢?

当拿到shell权限,看到数字和字母随机生成的主机名大概率猜到在容器里了,查看进程,进程数很少,PID为1的进程为业务进程,这也是容器环境的典型特征。当然,以上这两种都是比较主观的判断。 接下来,我们再来盘点下比较常用的几种检测方式。

方式一:查询cgroup信息

最简单精准的方式就是查询系统进程的cgroup信息,通过响应的内容可以识别当前进程所处的运行环境,就可以知道是在虚拟机、docker还是kubepods里。

        
          cat /proc/1/cgroup
        
      

docker 环境下:

1b83fa235254dbfe15c1dd39936e2591.webpK8s环境下:

5572e465407b6be47c9f7e7c7d2669fe.webp

虚拟机环境下:

a4eb111aeec7499c3c9f639dc691d9d4.webp 方式二:检查/.dockerenv文件

通过判断根目录下的 .dockerenv文件是否存在,可以简单的识别docker环境。

K8s&docker环境下:ls -alh /.dockerenv 可以找到文件。

1616c05e52ecfb47b5f00a1f8ec99d60.webp

虚拟机环境下:是没有这个.dockerenv文件的。

a810749489cda6ffca1d12c6c0ec74a4.webp

方式三:检查mount信息

利用mount查看挂载磁盘是否存在docker相关信息。

K8s&docker环境下:

b73c5cfa997201c8d5980587492fb8d6.webp

虚拟机环境下:

22e986b8fff6ab1f8c569f5316183398.webp

方式四:查看硬盘信息

fdisk -l 容器输出为空,非容器有内容 输出。

K8s& docker环境下

399ae3ed7f807e9174ea2204c37662f1.webp

虚拟机环境下:

c60e3f62de7de842bc0f52b25705c58b.webp 方式五:查看文件系统以及挂载点

df -h 检查文件系统挂载的目录,也能够简单判断是否为docker环境。

K8s&docker环境下:

e3b8b4daefaf91221b6283fcc1cb10d5.webp

虚拟机环境:

8ec66044de2eb9242fff3adda443b3fd.webp 方式六:环境变量

docker容器和虚拟机的环境变量也有点区别,但不好判断,但pod里面的环境变量其实是很明显的。

K8s环境下:

466f9e810f7ccce2bfd854f8a907a088.webp

浏览 44
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报