# GCP - Filestore Post Exploitation

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

## Filestore

For more information about Filestore check:

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

### Filestoreをマウントする

共有のファイルシステムは攻撃者の観点から興味深い**機密情報を含んでいる可能性があります**。Filestoreにアクセスできれば、**マウントする**ことが可能です:

<details>

<summary>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>

Filestore インスタンスの IP アドレスを見つけるには、ページの列挙セクションを確認してください:

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

### 制限を解除して追加の権限を取得

もし攻撃者が共有にアクセスできる IP アドレスにいないが、共有を変更するのに十分な権限がある場合、アクセス制限を解除したりアクセス権を変更したりすることが可能です。自分の IP アドレスに対してより多くの権限を付与して、共有に対する管理者アクセスを得ることもできます:

<details>

<summary>Filestore インスタンスを更新してアクセスを許可する</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>

### バックアップを復元する

バックアップがある場合、既存のインスタンスまたは新しいインスタンスに**復元する**ことで、その**情報にアクセス可能になります:**

<details>

<summary>新しいインスタンスを作成してバックアップを復元する</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>

### バックアップを作成して復元する

もし**共有にアクセスできず、それを変更したくない**場合は、それを**バックアップとして作成**し、前述のように**復元**することができます:

<details>

<summary>新しいインスタンスにバックアップを作成して復元する</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}}
