GCP - コンテナとGKEの列挙
Reading time: 7 minutes
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
コンテナ
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>
プライベートエスカレーション
次のページでは、コンテナの権限を悪用して特権を昇格させる方法を確認できます:
ノードプール
これらは、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
gcloud
を使用したコンテナについてはこちらで詳しく読むことができます。
これはGCPでKubernetesを列挙するためのシンプルなスクリプトです: https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/gcp_k8s_enum
TLSブートストラップ特権昇格
最初にこの特権昇格技術はGKEクラスター内でのprivescを可能にし、攻撃者が完全にそれを侵害することを許可しました。
これは、GKEがメタデータ内にTLSブートストラップ資格情報を提供しており、ポッドを侵害するだけで誰でもアクセス可能であるためです。
使用される技術は以下の投稿で説明されています:
- https://www.4armed.com/blog/hacking-kubelet-on-gke/
- https://www.4armed.com/blog/kubeletmein-kubelet-hacking-tool/
- https://rhinosecuritylabs.com/cloud-security/kubelet-tls-bootstrap-privilege-escalation/
このプロセスを自動化するために作成されたツールがあります: https://github.com/4ARMED/kubeletmein
しかし、この技術はメタデータ資格情報を使用することで、新しいノードのCSR(証明書署名要求)を生成することが可能であり、それが自動的に承認されていたという事実を悪用していました。
私のテストでは、これらの要求がもはや自動的に承認されないことを確認したので、この技術がまだ有効かどうかは不明です。
Kubelet APIの秘密
この投稿では、GKE内のポッドからアクセス可能なKubelet APIアドレスが発見され、実行中のポッドの詳細が提供されていることが明らかになりました:
curl -v -k http://10.124.200.1:10255/pods
APIがリソースを変更することを許可していなくても、レスポンス内に機密情報を見つけることができる可能性があります。エンドポイント/podsはKiterunnerを使用して見つかりました。
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。