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>

特権昇格

次のページでは、権限を乱用して特権を昇格する方法を確認できます:

GCP - Container Privesc

ノードプール

これらは、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 Pentesting

まず、プロジェクトに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
  • TLSブートストラップ特権昇格

最初にこの特権昇格テクニックは、GKEクラスタ内での特権昇格を可能にし、攻撃者が完全に侵害することができました。

これは、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