GCP - Sourcerepos Privesc

Support HackTricks

소스 리포지토리

소스 리포지토리에 대한 자세한 정보는 다음을 확인하세요:

GCP - Source Repositories Enum

source.repos.get

이 권한을 사용하면 리포지토리를 로컬로 다운로드할 수 있습니다:

gcloud source repos clone <repo-name> --project=<project-uniq-name>

source.repos.update

이 권한을 가진 주체는 **gcloud source repos clone <repo>**로 클론한 리포지토리 내에서 코드를 작성할 수 있습니다. 그러나 이 권한은 사용자 정의 역할에 부여할 수 없으므로 다음과 같은 미리 정의된 역할을 통해 부여해야 합니다:

  • Owner

  • Editor

  • Source Repository Administrator (roles/source.admin)

  • Source Repository Writer (roles/source.writer)

작성을 위해서는 일반적인 **git push**를 수행하면 됩니다.

source.repos.setIamPolicy

이 권한을 가진 공격자는 이전 권한을 자신에게 부여할 수 있습니다.

Secret access

공격자가 토큰이 저장된 비밀에 접근할 수 있다면, 그는 이를 훔칠 수 있습니다. 비밀에 접근하는 방법에 대한 자세한 정보는 다음을 확인하세요:

GCP - Secretmanager Privesc

Add SSH keys

웹 콘솔에서 Source Repository 프로젝트에 ssh 키를 추가하는 것이 가능합니다. 이는 **/v1/sshKeys:add**에 POST 요청을 보내며, https://source.cloud.google.com/user/ssh_keys에서 구성할 수 있습니다.

ssh 키가 설정되면 다음을 사용하여 리포지토리에 접근할 수 있습니다:

git clone ssh://username@domain.com@source.developers.google.com:2022/p/<proj-name>/r/<repo-name>

그리고 나서 git 명령어를 평소처럼 사용합니다.

수동 자격 증명

소스 리포지토리에 접근하기 위해 수동 자격 증명을 생성할 수 있습니다:

첫 번째 링크를 클릭하면 https://source.developers.google.com/auth/start?scopes=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform&state&authuser=3로 이동합니다.

이 링크는 Google Cloud Development에 접근하기 위한 Oauth 인증 프롬프트를 표시합니다. 따라서 사용자의 자격 증명이나 브라우저에서 열린 세션이 필요합니다.

이것은 **$HOME/.gitcookies**에 git 쿠키를 실행하고 구성하기 위한 bash 스크립트가 있는 페이지로 안내합니다.

스크립트를 실행하면 git clone, push 등을 사용할 수 있으며, 잘 작동합니다.

source.repos.updateProjectConfig

이 권한을 사용하면 소스 리포지토리의 기본 보호 기능을 비활성화하여 개인 키가 포함된 코드를 업로드하지 않도록 할 수 있습니다:

gcloud source project-configs update --disable-pushblock

다른 pub/sub 주제를 구성하거나 아예 비활성화할 수도 있습니다:

gcloud source project-configs update --remove-topic=REMOVE_TOPIC
gcloud source project-configs update --remove-topic=UPDATE_TOPIC
Support HackTricks

Last updated