GCP - Containers & GKE Enum

HackTricksをサポートする

コンテナ

GCPのコンテナでは、GCPが提供するほとんどのコンテナベースのサービスを見つけることができます。ここでは、最も一般的なものを列挙する方法を示します:

gcloud container images list
gcloud container images list --repository us.gcr.io/<project-name> #Search in other subdomains repositories
gcloud container images describe <name>
gcloud container subnets list-usable
gcloud container clusters list
gcloud container clusters describe <name>
gcloud container clusters get-credentials [NAME]

# Run a container locally
docker run --rm -ti gcr.io/<project-name>/secret:v1 sh

# Login & Download
sudo docker login -u oauth2accesstoken -p $(gcloud auth print-access-token) https://HOSTNAME
## where HOSTNAME is gcr.io, us.gcr.io, eu.gcr.io, or asia.gcr.io.
sudo docker pull HOSTNAME/<project-name>/<image-name>

Privesc

次のページでは、コンテナの権限を悪用して特権を昇格させる方法を確認できます:

Node Pools

これらは、Kubernetesクラスターを形成するマシン(ノード)のプールです。

# Pool of machines used by the cluster
gcloud container node-pools list --zone <zone> --cluster <cluster>
gcloud container node-pools describe --cluster <cluster> --zone <zone> <node-pool>

Kubernetes

Kubernetesとは何かについての情報は、こちらのページを確認してください:

まず、プロジェクト内にKubernetesクラスターが存在するかどうかを確認できます。

gcloud container clusters list

クラスターがある場合、gcloudが自動的に~/.kube/configファイルを構成できます。このファイルは、K8sクラスターと対話するためのネイティブCLIであるkubectlを使用する際に、あなたを認証するために使用されます。このコマンドを試してください。

gcloud container clusters get-credentials [CLUSTER NAME] --region [REGION]

次に、生成された資格情報を確認するために ~/.kube/config ファイルを見てください。このファイルは、アクティブな gcloud セッションが使用しているのと同じアイデンティティに基づいてアクセストークンを自動的に更新するために使用されます。もちろん、これには正しい権限が必要です。

これが設定されると、クラスターの構成を取得するために次のコマンドを試すことができます。

kubectl cluster-info

You can read more about gcloud for containers here.

This is a simple script to enumerate kubernetes in GCP: https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/gcp_k8s_enum

TLS ブートストラップ特権昇格

最初にこの特権昇格技術は GKE クラスター内での privesc を可能にし、攻撃者が 完全にそれを侵害する ことを許可しました。

これは、GKE がメタデータ内に TLS ブートストラップ資格情報 を提供しており、ポッドを侵害するだけで誰でもアクセス可能 であるためです。

使用される技術は以下の投稿で説明されています:

このプロセスを自動化するために作成されたツールはこちらです: https://github.com/4ARMED/kubeletmein

しかし、この技術は メタデータ資格情報を使用して 新しいノードの CSR (証明書署名要求) を 生成することが可能 であり、これは 自動的に承認されていました。 私のテストでは、これらの要求はもはや自動的に承認されない ことを確認したので、この技術がまだ有効かどうかはわかりません。

Kubelet API の秘密

この投稿 では、GKE 内のポッドからアクセス可能な Kubelet API アドレスが発見され、実行中のポッドの詳細が提供されました:

curl -v -k http://10.124.200.1:10255/pods

APIがリソースを変更することを許可しない場合でも、レスポンス内に機密情報を見つけることができる可能性があります。エンドポイント/podsはKiterunnerを使用して見つかりました。

HackTricksをサポートする

Last updated