freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

CVE-2021-41254漏洞分析与复现
2024-03-12 17:23:39

本文仅用于学习研究为目的,禁止用于任何非法目的,否则后果自负

漏洞背景

flux社区公布了kustomize-controller一处命令注入漏洞,拥有创建KubernetesSecretsService AccountsFlux Kustomization对象的用户,可以通过在KubernetesSecret中嵌入shell脚本在kustomize-controller容器内执行命令。在多租户场景下,拥有创建kustomize-controller资源对象的用户,能够通过命令注入,在kustomize-controllerPods中运行命令,借用容器中的kubectl,能够使得经过身份验证的Kubernetes用户从低权限提权到集群管理员权限。

CVE-2021-41254被评估为8.8 HIGH

漏洞分析与复现

漏洞分析

如下代码片段,拥有创建 KubernetesSecretsService AccountsFlux Kustomization资源对象的用户,能够通过在saToken即KubernetesSecret中嵌入shell命令从而能够在容器中实现命令执行。且从代码中可以看到,容器中是有kubectl工具的。

1637845689339-9fa6dca9-16a0-4634-a755-ff1b5c05a251.png

会直接使用GetServiceAccountToken获取到servica account token取值,然后将saToken的值直接拼接到cmd里执行

cmd = fmt.Sprintf("%s --token %s", cmd, saToken)

1707032744929-41e157e9-8fd3-426a-b1e8-6a07db5bf498.png

同时,代码中会校验下secretNameserviceAccountName的一致性,secretName的名字必须以serviceAccountName的名字开头

因此,我们可以尝试在saToken中嵌入恶意命令,从而产生命令执行的效果

通过登陆到kustomize-controllerPod,可以看到镜像中是自带shkubectl命令的

# 漏洞 # 漏洞分析
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录