GCP - 컨테이너 및 GKE 열거
Reading time: 4 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 깃허브 리포지토리에 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>
Privesc
다음 페이지에서 컨테이너 권한을 악용하여 권한 상승하는 방법을 확인할 수 있습니다:
Node Pools
이들은 쿠버네티스 클러스터를 형성하는 머신(노드)의 풀입니다.
# 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
세션이 사용하는 동일한 ID를 기반으로 액세스 토큰을 자동으로 새로 고치는 데 사용됩니다. 물론 이를 위해서는 올바른 권한이 필요합니다.
이 설정이 완료되면 클러스터 구성을 가져오기 위해 다음 명령을 시도할 수 있습니다.
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(Certificate Signing Request)을 생성할 수 있었던 사실을 악용했습니다. 이 요청은 자동으로 승인되었습니다.
내 테스트에서 이 요청들이 더 이상 자동으로 승인되지 않는 것을 확인했으므로, 이 기술이 여전히 유효한지 확신할 수 없습니다.
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 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.