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
З цим дозволом зловмисник може надати собі попередні дозволи.
Доступ до секретів
Якщо зловмисник має доступ до секретів, де зберігаються токени, він зможе їх вкрасти. Для отримання додаткової інформації про те, як отримати доступ до секрету, перегляньте:
GCP - Secretmanager PrivescДодавання SSH ключів
Можливо додати ssh ключі до проекту Source Repository в веб-консолі. Це робить POST запит до /v1/sshKeys:add
і може бути налаштовано на https://source.cloud.google.com/user/ssh_keys
Після налаштування вашого ssh ключа, ви можете отримати доступ до репозиторію за допомогою:
And then use git
commands are per usual.
Manual Credentials
It's possible to create manual credentials to access the Source Repositories:
Clicking on the first link it will direct you to https://source.developers.google.com/auth/start?scopes=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform&state&authuser=3
Which will prompt an Oauth authorization prompt to give access to Google Cloud Development. So you will need either the credentials of the user or an open session in the browser for this.
This will send you to a page with a bash script to execute and configure a git cookie in $HOME/.gitcookies
Executing the script you can then use git clone, push... and it will work.
source.repos.updateProjectConfig
source.repos.updateProjectConfig
З цим дозволом можна вимкнути захист Source Repositories за замовчуванням, щоб не завантажувати код, що містить приватні ключі:
Ви також можете налаштувати іншу pub/sub тему або навіть повністю її вимкнути:
Last updated