GCP - Containers & GKE Enum
Last updated
Last updated
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
GCPのコンテナでは、GCPが提供するほとんどのコンテナベースのサービスを見つけることができます。ここでは、最も一般的なものを列挙する方法を示します:
次のページでは、コンテナの権限を悪用して特権を昇格させる方法を確認できます:
これらは、Kubernetesクラスターを形成するマシン(ノード)のプールです。
Kubernetesとは何かについての情報は、こちらのページを確認してください:
まず、プロジェクト内にKubernetesクラスターが存在するかどうかを確認できます。
クラスターがある場合、gcloud
が自動的に~/.kube/config
ファイルを構成できます。このファイルは、K8sクラスターと対話するためのネイティブCLIであるkubectlを使用する際に、あなたを認証するために使用されます。このコマンドを試してください。
次に、生成された資格情報を確認するために ~/.kube/config
ファイルを見てください。このファイルは、アクティブな gcloud
セッションが使用しているのと同じアイデンティティに基づいてアクセストークンを自動的に更新するために使用されます。もちろん、これには正しい権限が必要です。
これが設定されると、クラスターの構成を取得するために次のコマンドを試すことができます。
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
最初にこの特権昇格技術は GKE クラスター内での privesc を可能にし、攻撃者が 完全にそれを侵害する ことを許可しました。
これは、GKE がメタデータ内に TLS ブートストラップ資格情報 を提供しており、ポッドを侵害するだけで誰でもアクセス可能 だからです。
使用される技術は以下の投稿で説明されています:
このプロセスを自動化するためにこのツールが作成されました: https://github.com/4ARMED/kubeletmein
しかし、この技術は メタデータ資格情報を使用して 新しいノードの CSR (証明書署名要求) を 生成することが可能 であり、これは 自動的に承認されていました。 私のテストでは これらの要求がもはや自動的に承認されない ことを確認したので、この技術がまだ有効かどうかはわかりません。
この投稿 では、GKE 内のポッドからアクセス可能な Kubelet API アドレスが発見され、実行中のポッドの詳細が提供されました:
APIがリソースを変更することを許可しない場合でも、レスポンス内に機密情報を見つけることができる可能性があります。エンドポイント/podsはKiterunnerを使用して見つかりました。
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)