AWS - EFS Enum

Support HackTricks

EFS

Informations de base

Amazon Elastic File System (EFS) est présenté comme un système de fichiers réseau entièrement géré, évolutif et élastique par AWS. Le service facilite la création et la configuration de systèmes de fichiers qui peuvent être accessibles simultanément par plusieurs instances EC2 et d'autres services AWS. Les principales caractéristiques d'EFS incluent sa capacité à évoluer automatiquement sans intervention manuelle, à fournir un accès à faible latence, à prendre en charge des charges de travail à haut débit, à garantir la durabilité des données et à s'intégrer parfaitement à divers mécanismes de sécurité AWS.

Par défaut, le dossier EFS à monter sera / mais il pourrait avoir un nom différent.

Accès réseau

Un EFS est créé dans un VPC et serait par défaut accessible dans tous les sous-réseaux VPC. Cependant, l'EFS aura un groupe de sécurité. Afin de donner accès à un EC2 (ou tout autre service AWS) pour monter l'EFS, il est nécessaire de permettre dans le groupe de sécurité EFS une règle NFS entrante (port 2049) en provenance du groupe de sécurité EC2.

Sans cela, vous ne pourrez pas contacter le service NFS.

Pour plus d'informations sur la façon de procéder, consultez : https://stackoverflow.com/questions/38632222/aws-efs-connection-timeout-at-mount

Énumération

# 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

Il se peut que le point de montage EFS soit dans le même VPC mais dans un sous-réseau différent. Si vous voulez être sûr de trouver tous les points EFS, il serait préférable de scanner le masque de sous-réseau /16.

Monter 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/

IAM Access

Par défaut, toute personne ayant un accès réseau à l'EFS pourra le monter, le lire et y écrire même en tant qu'utilisateur root. Cependant, des politiques de système de fichiers pourraient être en place n'autorisant que les principaux avec des autorisations spécifiques à y accéder. Par exemple, cette politique de système de fichiers ne permettra même pas de monter le système de fichiers si vous n'avez pas la permission 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"
}
}
}
]
}

Ou cela préventera l'accès anonyme :

Notez que pour monter des systèmes de fichiers protégés par IAM, vous DEVEZ utiliser le type "efs" dans la commande de montage :

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

Points d'accès

Les points d'accès sont des points d'entrée spécifiques à l'application dans un système de fichiers EFS qui facilitent la gestion de l'accès des applications aux ensembles de données partagés.

Lorsque vous créez un point d'accès, vous pouvez spécifier le propriétaire et les permissions POSIX pour les fichiers et répertoires créés via le point d'accès. Vous pouvez également définir un répertoire racine personnalisé pour le point d'accès, soit en spécifiant un répertoire existant, soit en en créant un nouveau avec les permissions souhaitées. Cela vous permet de contrôler l'accès à votre système de fichiers EFS sur une base par application ou par utilisateur, facilitant ainsi la gestion et la sécurisation de vos données de fichiers partagées.

Vous pouvez monter le système de fichiers à partir d'un point d'accès avec quelque chose comme :

# 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/

Notez que même en essayant de monter un point d'accès, vous devez toujours être en mesure de contacter le service NFS via le réseau, et si l'EFS a une politique de système de fichiers, vous avez besoin de suffisamment de permissions IAM pour le monter.

Les points d'accès peuvent être utilisés pour les objectifs suivants :

  • Simplifier la gestion des permissions : En définissant un utilisateur et un groupe POSIX pour chaque point d'accès, vous pouvez facilement gérer les permissions d'accès pour différentes applications ou utilisateurs sans modifier les permissions du système de fichiers sous-jacent.

  • Imposer un répertoire racine : Les points d'accès peuvent restreindre l'accès à un répertoire spécifique au sein du système de fichiers EFS, garantissant que chaque application ou utilisateur opère dans son dossier désigné. Cela aide à prévenir l'exposition ou la modification accidentelle des données.

  • Accès au système de fichiers plus facile : Les points d'accès peuvent être associés à une fonction AWS Lambda ou à une tâche AWS Fargate, simplifiant l'accès au système de fichiers pour les applications sans serveur et conteneurisées.

Privesc

Post Exploitation

Persistence

Soutenir HackTricks

Last updated