GCP - Sourcerepos Privesc

支持 HackTricks

Source Repositories

有关 Source Repositories 的更多信息,请查看:

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

可以在 Web 控制台中向 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 命令。

手动凭证

可以创建手动凭证来访问 Source Repositories:

点击第一个链接会将你引导至 https://source.developers.google.com/auth/start?scopes=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform&state&authuser=3

这将提示一个 Oauth 授权提示 以授予 Google Cloud Development 访问权限。因此,你需要用户的 凭证 或浏览器中的 开放会话

这会将你带到一个包含 bash 脚本 的页面,并在 $HOME/.gitcookies 中配置一个 git cookie。

执行脚本后,你可以使用 git clone、push... 并且它将正常工作。

source.repos.updateProjectConfig

有了这个权限,可以禁用 Source Repositories 的默认保护,以防止上传包含 Private Keys 的代码:

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