GCP - Sourcerepos Privesc

支持 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> 克隆的存储库中编写代码。但请注意,此权限不能附加到自定义角色,因此必须通过预定义角色授予,例如:

  • 拥有者

  • 编辑者

  • 源存储库管理员 (roles/source.admin)

  • 源存储库写入者 (roles/source.writer)

要进行写入,只需执行常规的 git push

source.repos.setIamPolicy

拥有此权限的攻击者可以授予自己之前的权限。

Secret access

如果攻击者 访问存储令牌的秘密,他将能够窃取它们。有关如何访问秘密的更多信息,请查看:

GCP - Secretmanager Privesc

Add SSH keys

可以在网页控制台中 向源存储库项目添加 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

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

这将引导您到一个页面,提供一个 bash 脚本以执行 并在 $HOME/.gitcookies 中配置 git cookie。

执行脚本后,您可以使用 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