GCP - Sourcerepos Privesc

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をサポートする

Source Repositories

For more information about Source Repositories check:

GCP - Source Repositories Enum

source.repos.get

この権限があれば、リポジトリをローカルにダウンロードできます:

Clone source repository ```bash gcloud source repos clone --project= ```

source.repos.update

この権限を持つプリンシパルは、gcloud source repos clone <repo> でクローンした repository 内にコードを書き込むことができます。 ただし、この権限はカスタムロールに付与できないため、次のような既定のロールを通じて付与される必要があります:

  • Owner
  • Editor
  • Source Repository Administrator (roles/source.admin)
  • Source Repository Writer (roles/source.writer)

実際に書き込むには、通常どおり git push を実行します。

source.repos.setIamPolicy

この権限があれば、攻撃者は自身に前述の権限を付与することができます。

シークレットへのアクセス

攻撃者がトークンが保存されている シークレットにアクセスできる 場合、それらを盗むことができます。シークレットへのアクセス方法の詳細は次を参照してください:

GCP - Secretmanager Privesc

SSH keys を追加

ウェブコンソールから Source Repository プロジェクトに ssh keys を追加する ことが可能です。これは /v1/sshKeys:add への POST リクエストを行い、https://source.cloud.google.com/user/ssh_keys で設定できます。

ssh キーを設定すると、次の方法で repo にアクセスできます:

SSH を使って repository をクローン ```bash git clone ssh://username@domain.com@source.developers.google.com:2022/p//r/ ```

その後は通常どおり**git**コマンドを使用します。

手動クレデンシャル

Source Repositories にアクセスするための手動クレデンシャルを作成できます:

最初のリンクをクリックすると、https://source.developers.google.com/auth/start?scopes=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform&state&authuser=3 に移動します。

これによりOauth authorization promptが表示され、Google Cloud Developmentへのアクセス許可が求められます。したがって、これを行うにはcredentials of the userまたはopen session in the browserのいずれかが必要です。

これにより、実行するためのbash script to executeが記載されたページに移動し、git cookie が**$HOME/.gitcookies** に設定されます。

スクリプトを実行すると、その後 git clone、push… が使用できるようになります。

source.repos.updateProjectConfig

この権限があれば、Source Repositories のデフォルト保護(Private Keys を含むコードのアップロードを制限する機能)を無効化することが可能です:

pushblock を無効化し、pub/sub の構成を変更する ```bash gcloud source project-configs update --disable-pushblock ``` 別の pub/sub topic を設定することも、完全に無効化することもできます: ```bash gcloud source project-configs update --remove-topic=REMOVE_TOPIC gcloud source project-configs update --remove-topic=UPDATE_TOPIC ```

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をサポートする