GCP - Containers, GKE & Composer Enum
컨테이너
GCP 컨테이너에서는 GCP가 제공하는 대부분의 컨테이너 기반 서비스를 찾을 수 있습니다. 여기에서는 가장 일반적인 서비스를 열거하는 방법을 볼 수 있습니다:
권한 상승 (Privesc)
다음 페이지에서는 컨테이너 권한을 남용하여 권한을 상승하는 방법을 확인할 수 있습니다:
pageGCP - Container Privesc노드 풀 (Node Pools)
이것들은 쿠버네티스 클러스터를 구성하는 머신 (노드)의 풀입니다.
Composer
이것은 Airflow의 GCP 관리 버전입니다.
권한 상승
다음 페이지에서는 composer 권한을 남용하여 권한을 상승시키는 방법을 확인할 수 있습니다:
pageGCP - Composer PrivescKubernetes
Kubernetes가 무엇인지에 대한 정보는 다음 페이지를 참조하십시오:
pageKubernetes Pentesting먼저, 프로젝트에 Kubernetes 클러스터가 있는지 확인할 수 있습니다.
만약 클러스터가 있다면, gcloud
를 사용하여 자동으로 ~/.kube/config
파일을 구성할 수 있습니다. 이 파일은 K8s 클러스터와 상호 작용하기 위한 원시 CLI인 kubectl을 사용할 때 인증하는 데 사용됩니다. 다음 명령을 시도해보세요.
그런 다음 생성된 자격 증명을 확인하기 위해 ~/.kube/config
파일을 살펴보십시오. 이 파일은 활성 gcloud
세션과 동일한 신원을 기반으로 액세스 토큰을 자동으로 갱신하는 데 사용됩니다. 물론 이를 위해서는 올바른 권한이 필요합니다.
이 설정이 완료되면 다음 명령을 사용하여 클러스터 구성을 가져올 수 있습니다.
gcloud
를 사용한 컨테이너에 대한 자세한 내용은 여기에서 확인할 수 있습니다.
GCP에서 Kubernetes를 열거하기 위한 간단한 스크립트입니다: https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/gcp_k8s_enum
TLS 부트스트랩 권한 상승
초기에 이 권한 상승 기술은 GKE 클러스터 내에서 권한 상승을 허용하여 공격자가 클러스터를 완전히 제어할 수 있게 했습니다.
이는 GKE가 메타데이터에서 TLS 부트스트랩 자격 증명을 제공하기 때문에 가능한데, 이는 어떤 pod를 공격하면 누구나 접근할 수 있습니다.
사용된 기술은 다음 게시물에서 설명되어 있습니다:
또한 이 도구는 이 과정을 자동화하기 위해 만들어졌습니다: https://github.com/4ARMED/kubeletmein
그러나 이 기술은 메타데이터 자격 증명을 사용하여 새로운 노드에 대한 CSR(인증서 서명 요청)을 생성할 수 있었기 때문에 가능했습니다. 이 요청은 자동으로 승인되었습니다. 제 테스트에서는 이러한 요청이 더 이상 자동으로 승인되지 않는 것을 확인했으므로 이 기술이 여전히 유효한지 확실하지 않습니다.
Kubelet API에서의 Secrets
이 게시물에서는 GKE 내의 pod에서 접근할 수 있는 Kubelet API 주소를 통해 실행 중인 pod의 세부 정보를 얻을 수 있다는 것이 발견되었습니다.
API가 리소스 수정을 허용하지 않더라도, 응답에서 민감한 정보를 찾을 수 있습니다. Kiterunner를 사용하여 /pods 엔드포인트를 찾았습니다.
最終更新