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

Last updated