当 docker 容器设置 –cap-add=SYS_PTRACE 或 Kubernetes PODS 设置 securityContext.capabilities 为 SYS_PTRACE 配置等把 SYS_PTRACE capabilities 权限赋予容器的情况,都可能导致容器逃逸。

图片

这个场景很常见,因为无论是不是线上环境,业务进行灾难重试和程序调试都是没办法避免的,所以容器经常被设置 ptrace 权限。

使用 capsh –print 可以判断当前容器是否附加了 ptrace capabilities。

图片

这里的利用方式和进程注入的方式大致无二,如果是使用 pupy 或 metasploit 维持容器的 shell 权限的话,利用框架现有的功能就能很方便的进行注入和利用。

当然,就如上面所述,拥有了该权限就可以在容器内执行 strace 和 ptrace 等工具,若只是一些常见场景的信息收集也不一定需要注入恶意 shellcode 进行逃逸才可以做到。

最后编辑: kuteng  文档更新时间: 2022-06-01 16:18   作者:kuteng