容器环境检测方法总结

共 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



浏览 92
点赞
评论
收藏
分享

手机扫一扫分享

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

手机扫一扫分享

分享
举报