# GCP - Filestore Enum

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

## Informations de base

Google Cloud Filestore est un **service de stockage de fichiers géré** conçu pour les applications ayant besoin à la fois d'une **interface de système de fichiers et d'un système de fichiers partagé pour les données**. Ce service excelle en offrant des partages de fichiers haute performance, qui peuvent être intégrés avec divers services GCP. Son utilité se manifeste dans des scénarios où les interfaces et sémantiques de systèmes de fichiers traditionnels sont cruciales, comme dans le traitement des médias, la gestion de contenu et la sauvegarde de bases de données.

Vous pouvez le considérer comme tout autre **NFS** **dépôt de documents partagé -** une source potentielle d'informations sensibles.

### Connexions

Lors de la création d'une instance Filestore, il est possible de **sélectionner le réseau où elle sera accessible**.

De plus, par **défaut, tous les clients sur le réseau VPC sélectionné et la région pourront y accéder**, cependant, il est possible de **restreindre l'accès également par adresse IP** ou plage et d'indiquer le privilège d'accès (Admin, Admin Viewer, Editor, Viewer) que l'utilisateur client obtiendra **en fonction de l'adresse IP.**

Il peut également être accessible via une **connexion d'accès de service privé :**

- Sont par réseau VPC et peuvent être utilisés à travers tous les services gérés tels que Memorystore, Tensorflow et SQL.
- Sont **entre votre réseau VPC et un réseau appartenant à Google utilisant un peering VPC**, permettant à vos instances et services de communiquer exclusivement en **utilisant des adresses IP internes**.
- Crée un projet isolé pour vous du côté du producteur de services, ce qui signifie qu'aucun autre client ne le partage. Vous ne serez facturé que pour les ressources que vous provisionnez.
- Le peering VPC importera de nouvelles routes vers votre VPC.

### Sauvegardes

Il est possible de créer des **sauvegardes des partages de fichiers**. Celles-ci peuvent être ensuite **restaurées dans l'origine** de la nouvelle instance Fileshare ou dans **de nouvelles**.

### Chiffrement

Par défaut, une **clé de chiffrement gérée par Google** sera utilisée pour chiffrer les données, mais il est possible de sélectionner une **clé de chiffrement gérée par le client (CMEK)**.

### Énumération

Si vous trouvez un filestore disponible dans le projet, vous pouvez **le monter** depuis votre instance Compute compromise. Utilisez la commande suivante pour voir s'il en existe.
```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]
> Notez qu'un service filestore pourrait être dans un **sous-réseau complètement nouveau créé pour lui** (dans une connexion d'accès de service privé, qui est un **pair VPC**).\
> Vous pourriez donc avoir besoin d'**énumérer les pairs VPC** pour également exécuter nmap sur ces plages de réseau.
>
> ```bash
> # Obtenir les pairages
> gcloud compute networks peerings list
> # Obtenir les routes importées d'un pairage
> gcloud compute networks peerings list-routes <peering-name> --network=<network-name> --region=<region> --direction=INCOMING
> ```

### Escalade de privilèges & Post Exploitation

Il n'y a pas de moyens d'escalader les privilèges dans GCP en abusant directement de ce service, mais en utilisant quelques **astuces de Post Exploitation, il est possible d'accéder aux données** et peut-être que vous pouvez trouver des identifiants pour escalader les privilèges :

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

### Persistance

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

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