# GCP - Filestore Enum

{{#include ../../../banners/hacktricks-training.md}}

## Informazioni di base

Google Cloud Filestore è un **servizio di archiviazione file gestito** progettato per applicazioni che necessitano sia di un **interfaccia di filesystem che di un filesystem condiviso per i dati**. Questo servizio si distingue per l'offerta di condivisioni di file ad alte prestazioni, che possono essere integrate con vari servizi GCP. La sua utilità si manifesta in scenari in cui le interfacce e le semantiche tradizionali del filesystem sono cruciali, come nell'elaborazione dei media, nella gestione dei contenuti e nel backup dei database.

Puoi pensare a questo come a qualsiasi altro **NFS** **repository di documenti condivisi -** una potenziale fonte di informazioni sensibili.

### Connessioni

Quando crei un'istanza di Filestore è possibile **selezionare la rete a cui sarà accessibile**.

Inoltre, per **default tutti i client sulla rete VPC selezionata e nella regione potranno accedervi**, tuttavia, è possibile **limitare l'accesso anche per indirizzo IP** o intervallo e indicare il privilegio di accesso (Admin, Admin Viewer, Editor, Viewer) che l'utente client otterrà **a seconda dell'indirizzo IP.**

Può anche essere accessibile tramite una **Connessione di Accesso ai Servizi Privati:**

- Sono per rete VPC e possono essere utilizzate in tutti i servizi gestiti come Memorystore, Tensorflow e SQL.
- Sono **tra la tua rete VPC e la rete di proprietà di Google utilizzando un VPC peering**, consentendo alle tue istanze e servizi di comunicare esclusivamente **utilizzando indirizzi IP interni**.
- Creano un progetto isolato per te sul lato del produttore di servizi, il che significa che nessun altro cliente lo condivide. Sarai addebitato solo per le risorse che provisioni.
- Il VPC peering importerà nuove rotte nella tua VPC.

### Backup

È possibile creare **backup delle condivisioni di file**. Questi possono essere successivamente **ripristinati nell'istanza di Fileshare originale** o in **nuove**.

### Crittografia

Per default verrà utilizzata una **chiave di crittografia gestita da Google** per crittografare i dati, ma è possibile selezionare una **chiave di crittografia gestita dal cliente (CMEK)**.

### Enumerazione

Se trovi un filestore disponibile nel progetto, puoi **montarlo** dall'interno della tua Istanza Compute compromessa. Usa il seguente comando per vedere se ne esistono.
```bash
# Instances
gcloud filestore instances list # Check the IP address
gcloud filestore instances describe --zone <zone> <name> # Check IP and access restrictions

# Backups
gcloud filestore backups list
gcloud filestore backups describe --region <region> <backup>

# Search for NFS shares in a VPC subnet
sudo nmap -n -T5 -Pn -p 2049 --min-parallelism 100 --min-rate 1000 --open 10.99.160.2/20
```
> [!CAUTION]
> Nota che un servizio filestore potrebbe trovarsi in una **sottorete completamente nuova creata per esso** (all'interno di una Connessione di Accesso ai Servizi Privati, che è un **peer VPC**).\
> Quindi potresti dover **enumerare i peer VPC** per eseguire nmap su quei range di rete.
>
> ```bash
> # Ottieni peerings
> gcloud compute networks peerings list
> # Ottieni rotte importate da un peering
> gcloud compute networks peerings list-routes <peering-name> --network=<network-name> --region=<region> --direction=INCOMING
> ```

### Escalation dei privilegi & Post Exploitation

Non ci sono modi per elevare i privilegi in GCP abusando direttamente di questo servizio, ma utilizzando alcuni **trucchi di Post Exploitation è possibile ottenere accesso ai dati** e forse puoi trovare alcune credenziali per elevare i privilegi:

{{#ref}}
../gcp-post-exploitation/gcp-filestore-post-exploitation.md
{{#endref}}

### Persistenza

{{#ref}}
../gcp-persistence/gcp-filestore-persistence.md
{{#endref}}

{{#include ../../../banners/hacktricks-training.md}}
