GCP - Sourcerepos Privesc
Source Repositories
有关 Source Repositories 的更多信息,请查看:
GCP - Source Repositories Enumsource.repos.get
source.repos.get
有了这个权限,可以将仓库下载到本地:
source.repos.update
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
source.repos.setIamPolicy
拥有此权限的攻击者可以授予自己前述权限。
Secret access
如果攻击者可以访问存储令牌的秘密,他将能够窃取它们。有关如何访问秘密的更多信息,请查看:
GCP - Secretmanager PrivescAdd SSH keys
可以在 Web 控制台中向 Source Repository 项目添加 ssh 密钥。它会向 /v1/sshKeys:add
发送一个 post 请求,并且可以在 https://source.cloud.google.com/user/ssh_keys 中进行配置。
一旦设置了 ssh 密钥,你可以通过以下方式访问存储库:
然后像往常一样使用 git
命令。
手动凭证
可以创建手动凭证来访问 Source Repositories:
这将提示一个 Oauth 授权提示 以授予 Google Cloud Development 访问权限。因此,你需要用户的 凭证 或浏览器中的 开放会话。
这会将你带到一个包含 bash 脚本 的页面,并在 $HOME/.gitcookies
中配置一个 git cookie。
执行脚本后,你可以使用 git clone、push... 并且它将正常工作。
source.repos.updateProjectConfig
source.repos.updateProjectConfig
有了这个权限,可以禁用 Source Repositories 的默认保护,以防止上传包含 Private Keys 的代码:
你也可以配置一个不同的 pub/sub 主题,甚至完全禁用它:
Last updated