AWS - EFS Enum

Support HackTricks

EFS

Información Básica

Amazon Elastic File System (EFS) se presenta como un sistema de archivos de red completamente gestionado, escalable y elástico por AWS. El servicio facilita la creación y configuración de sistemas de archivos que pueden ser accedidos simultáneamente por múltiples instancias de EC2 y otros servicios de AWS. Las características clave de EFS incluyen su capacidad para escalar automáticamente sin intervención manual, proporcionar acceso de baja latencia, soportar cargas de trabajo de alto rendimiento, garantizar la durabilidad de los datos e integrarse sin problemas con varios mecanismos de seguridad de AWS.

Por defecto, la carpeta de EFS a montar será / pero podría tener un nombre diferente.

Acceso a la Red

Un EFS se crea en una VPC y sería por defecto accesible en todas las subredes de la VPC. Sin embargo, el EFS tendrá un Grupo de Seguridad. Para dar acceso a un EC2 (o cualquier otro servicio de AWS) para montar el EFS, es necesario permitir en el grupo de seguridad de EFS una regla de entrada NFS (puerto 2049) desde el Grupo de Seguridad de EC2.

Sin esto, no podrás contactar el servicio NFS.

Para más información sobre cómo hacer esto, consulta: https://stackoverflow.com/questions/38632222/aws-efs-connection-timeout-at-mount

Enumeración

# Get filesystems and access policies (if any)
aws efs describe-file-systems
aws efs describe-file-system-policy --file-system-id <id>

# Get subnetworks and IP addresses where you can find the file system
aws efs describe-mount-targets --file-system-id <id>
aws efs describe-mount-target-security-groups --mount-target-id <id>
aws ec2 describe-security-groups --group-ids <sg_id>

# Get other access points
aws efs describe-access-points

# Get replication configurations
aws efs describe-replication-configurations

# Search for NFS in EC2 networks
sudo nmap -T4 -Pn -p 2049 --open 10.10.10.0/20 # or /16 to be sure

Puede ser que el punto de montaje de EFS esté dentro de la misma VPC pero en una subred diferente. Si quieres asegurarte de encontrar todos los puntos EFS, sería mejor escanear la máscara de red /16.

Montar EFS

sudo mkdir /efs

## Mount found
sudo apt install nfs-common
sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport <IP>:/ /efs

## Mount with efs type
## You need to have installed the package amazon-efs-utils
sudo yum install amazon-efs-utils # If centos
sudo apt-get install amazon-efs-utils # If ubuntu
sudo mount -t efs <file-system-id/EFS DNS name>:/ /efs/

Acceso IAM

Por defecto, cualquier persona con acceso a la red al EFS podrá montarlo, leerlo y escribir en él incluso como usuario root. Sin embargo, las políticas del sistema de archivos podrían estar en vigor solo permitiendo a los principales con permisos específicos acceder a él. Por ejemplo, esta política del sistema de archivos no permitirá ni siquiera montar el sistema de archivos si no tienes el permiso IAM:

{
"Version": "2012-10-17",
"Id": "efs-policy-wizard-2ca2ba76-5d83-40be-8557-8f6c19eaa797",
"Statement": [
{
"Sid": "efs-statement-e7f4b04c-ad75-4a7f-a316-4e5d12f0dbf5",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "",
"Resource": "arn:aws:elasticfilesystem:us-east-1:318142138553:file-system/fs-0ab66ad201b58a018",
"Condition": {
"Bool": {
"elasticfilesystem:AccessedViaMountTarget": "true"
}
}
}
]
}

O esto prevendrá el acceso anónimo:

Tenga en cuenta que para montar sistemas de archivos protegidos por IAM DEBE usar el tipo "efs" en el comando de montaje:

sudo mkdir /efs
sudo mount -t efs -o tls,iam  <file-system-id/EFS DNS name>:/ /efs/
# To use a different pforile from ~/.aws/credentials
# You can use: -o tls,iam,awsprofile=namedprofile

Puntos de Acceso

Los puntos de acceso son puntos de entrada específicos de aplicación a un sistema de archivos EFS que facilitan la gestión del acceso de la aplicación a conjuntos de datos compartidos.

Cuando creas un punto de acceso, puedes especificar el propietario y los permisos POSIX para los archivos y directorios creados a través del punto de acceso. También puedes definir un directorio raíz personalizado para el punto de acceso, ya sea especificando un directorio existente o creando uno nuevo con los permisos deseados. Esto te permite controlar el acceso a tu sistema de archivos EFS de manera específica por aplicación o por usuario, facilitando la gestión y seguridad de tus datos de archivos compartidos.

Puedes montar el sistema de archivos desde un punto de acceso con algo como:

# Use IAM if you need to use iam permissions
sudo mount -t efs -o tls,[iam],accesspoint=<access-point-id> \
<file-system-id/EFS DNS> /efs/

Tenga en cuenta que incluso al intentar montar un punto de acceso, aún necesita poder contactar el servicio NFS a través de la red, y si el EFS tiene una política de sistema de archivos, necesita suficientes permisos de IAM para montarlo.

Los puntos de acceso se pueden utilizar para los siguientes propósitos:

  • Simplificar la gestión de permisos: Al definir un usuario y grupo POSIX para cada punto de acceso, puede gestionar fácilmente los permisos de acceso para diferentes aplicaciones o usuarios sin modificar los permisos del sistema de archivos subyacente.

  • Hacer cumplir un directorio raíz: Los puntos de acceso pueden restringir el acceso a un directorio específico dentro del sistema de archivos EFS, asegurando que cada aplicación o usuario opere dentro de su carpeta designada. Esto ayuda a prevenir la exposición accidental de datos o modificaciones.

  • Acceso más fácil al sistema de archivos: Los puntos de acceso se pueden asociar con una función de AWS Lambda o una tarea de AWS Fargate, simplificando el acceso al sistema de archivos para aplicaciones sin servidor y en contenedores.

Privesc

Post Explotación

Persistencia

Apoye a HackTricks

Last updated