AWS - EFS Enum

Support HackTricks

EFS

Informazioni di base

Amazon Elastic File System (EFS) è presentato come un sistema di file di rete completamente gestito, scalabile ed elastico da AWS. Il servizio facilita la creazione e la configurazione di sistemi di file che possono essere accessibili contemporaneamente da più istanze EC2 e altri servizi AWS. Le caratteristiche principali di EFS includono la sua capacità di scalare automaticamente senza intervento manuale, fornire accesso a bassa latenza, supportare carichi di lavoro ad alta capacità, garantire la durabilità dei dati e integrarsi senza problemi con vari meccanismi di sicurezza AWS.

Per definizione, la cartella EFS da montare sarà / ma potrebbe avere un nome diverso.

Accesso alla rete

Un EFS è creato in una VPC e sarebbe per impostazione predefinita accessibile in tutte le sottoreti VPC. Tuttavia, l'EFS avrà un Gruppo di Sicurezza. Per dare accesso a un EC2 (o qualsiasi altro servizio AWS) per montare l'EFS, è necessario consentire nel gruppo di sicurezza EFS una regola NFS in entrata (porta 2049) dal Gruppo di Sicurezza EC2.

Senza questo, non sarai in grado di contattare il servizio NFS.

Per ulteriori informazioni su come fare questo controlla: https://stackoverflow.com/questions/38632222/aws-efs-connection-timeout-at-mount

Enumerazione

# 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

Potrebbe essere che il punto di montaggio EFS si trovi all'interno della stessa VPC ma in una subnet diversa. Se vuoi essere sicuro di trovare tutti i punti EFS sarebbe meglio scansionare la netmask /16.

Monta 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

Per definizione chiunque abbia accesso alla rete all'EFS sarà in grado di montarlo, leggerlo e scriverlo anche come utente root. Tuttavia, le politiche del File System potrebbero essere in atto permettere solo ai principi con permessi specifici di accedervi. Ad esempio, questa politica del File System non permetterà nemmeno di montare il file system se non hai il permesso 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 questo prevenirà l'accesso anonimo:

Nota che per montare i file system protetti da IAM DEVI usare il tipo "efs" nel comando di montaggio:

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

Access Points

I punti di accesso sono punti di accesso specifici per l'applicazione in un file system EFS che rendono più facile gestire l'accesso dell'applicazione a set di dati condivisi.

Quando crei un punto di accesso, puoi specificare il proprietario e i permessi POSIX per i file e le directory creati tramite il punto di accesso. Puoi anche definire una directory radice personalizzata per il punto di accesso, specificando una directory esistente o creando una nuova con i permessi desiderati. Questo ti consente di controllare l'accesso al tuo file system EFS su base per applicazione o per utente, rendendo più facile gestire e proteggere i tuoi dati file condivisi.

Puoi montare il file system da un punto di accesso con qualcosa come:

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

Nota che anche cercando di montare un access point devi comunque essere in grado di contattare il servizio NFS tramite rete, e se l'EFS ha una policy del file system, hai bisogno di sufficienti permessi IAM per montarlo.

I punti di accesso possono essere utilizzati per i seguenti scopi:

  • Semplificare la gestione dei permessi: Definendo un utente e un gruppo POSIX per ogni punto di accesso, puoi gestire facilmente i permessi di accesso per diverse applicazioni o utenti senza modificare i permessi del file system sottostante.

  • Imporre una directory radice: I punti di accesso possono limitare l'accesso a una directory specifica all'interno del file system EFS, garantendo che ogni applicazione o utente operi all'interno della propria cartella designata. Questo aiuta a prevenire esposizioni accidentali o modifiche ai dati.

  • Accesso più semplice al file system: I punti di accesso possono essere associati a una funzione AWS Lambda o a un'attività AWS Fargate, semplificando l'accesso al file system per applicazioni serverless e containerizzate.

Privesc

Post Exploitation

Persistence

Supporta HackTricks

Last updated