# GCP - Filestore Post Exploitation

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

## Filestore

Per maggiori informazioni su Filestore consulta:

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

### Montare Filestore

Un filesystem condiviso **potrebbe contenere informazioni sensibili** interessanti dal punto di vista di un attacker. Con l'accesso a Filestore è possibile **montarlo**:

<details>

<summary>Montare il filesystem di Filestore</summary>
```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
```
</details>

Per trovare l'IP address di una Filestore instance, controlla la sezione di enumeration della pagina:

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

### Rimuovere le restrizioni e ottenere permessi aggiuntivi

Se l'attaccante non si trova in un IP address con accesso alla share, ma disponi di sufficienti permissions per modificarla, è possibile rimuovere le restrizioni o l'accesso su di essa. È anche possibile concedere più privilegi all'IP address per ottenere accesso admin alla share:

<details>

<summary>Aggiorna Filestore instance per consentire l'accesso</summary>
```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
}
]
}
}
```
</details>

### Ripristinare un backup

Se è presente un backup, è possibile **ripristinarlo** in un'istanza esistente o in una nuova, così che le sue **informazioni diventino accessibili:**

<details>

<summary>Crea una nuova istanza e ripristina il backup</summary>
```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
```
</details>

### Crea un backup e ripristinalo

Se **non hai accesso a una condivisione e non vuoi modificarla**, è possibile **creare un backup** di essa e **ripristinarlo** come indicato in precedenza:

<details>

<summary>Crea backup e ripristino in una nuova istanza</summary>
```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
```
</details>

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