AWS - EFS Enum

Impara l'hacking AWS da zero a eroe con htARTE (Esperto Red Team AWS di HackTricks)!

Altri modi per supportare 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 chiave di EFS includono la capacità di scalare automaticamente senza intervento manuale, fornire accesso a bassa latenza, supportare carichi di lavoro ad alta velocità, garantire la durabilità dei dati e integrarsi senza soluzione di continuità con vari meccanismi di sicurezza AWS.

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

Accesso di Rete

Un EFS viene creato in una VPC e sarebbe per default accessibile in tutte le sotto-reti VPC. Tuttavia, l'EFS avrà un Gruppo di Sicurezza. Per concedere l'accesso a un EC2 (o qualsiasi altro servizio AWS) per montare l'EFS, è necessario consentire nel gruppo di sicurezza EFS una regola NFS in ingresso (porta 2049) dal Gruppo di Sicurezza EC2.

Senza questo, non sarà possibile contattare il servizio NFS.

Per ulteriori informazioni su come fare ciò, 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 mount EFS si trovi nella stessa VPC ma in un subnet diverso. Se vuoi essere sicuro di trovare tutti i punti EFS, sarebbe meglio eseguire la scansione della maschera di rete /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/

Accesso IAM

Per default, chiunque abbia accesso di rete all'EFS sarà in grado di montarlo, leggere e scriverlo anche come utente root. Tuttavia, potrebbero essere in atto delle policy sul File System che consentono l'accesso solo a principali con permessi specifici. Ad esempio, questa policy sul File System non permetterà nemmeno di montare il file system se non si ha 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"
}
}
}
]
}

Oppure questo impedirà l'accesso anonimo:

Si noti che per montare i file system protetti da IAM DEVI utilizzare il tipo "efs" nel comando di mount:

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

Punti di accesso

I punti di accesso sono punti di ingresso specifici dell'applicazione in un sistema di file EFS che facilitano la gestione dell'accesso dell'applicazione ai dataset 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, sia specificando una directory esistente sia creandone una nuova con i permessi desiderati. Ciò ti consente di controllare l'accesso al tuo sistema di file EFS su base applicativa o per utente, facilitando la gestione e la sicurezza dei tuoi dati file condivisi.

Puoi montare il File System da un punto di accesso in questo modo:

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

Si noti che anche tentando di montare un access point è necessario essere in grado di contattare il servizio NFS tramite la rete, e se l'EFS ha una policy sul file system, è necessario avere abbastanza autorizzazioni IAM per montarlo.

Gli access points possono essere utilizzati per i seguenti scopi:

  • Semplificare la gestione delle autorizzazioni: Definendo un utente e un gruppo POSIX per ciascun access point, è possibile gestire facilmente le autorizzazioni di accesso per diverse applicazioni o utenti senza modificare le autorizzazioni del file system sottostante.

  • Imporre una directory radice: Gli access points possono limitare l'accesso a una directory specifica all'interno del file system EFS, garantendo che ciascuna applicazione o utente operi all'interno della propria cartella designata. Ciò aiuta a prevenire l'esposizione o la modifica accidentale dei dati.

  • Accesso più semplice al file system: Gli access points 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

pageAWS - EFS Privesc

Post Exploitation

pageAWS - EFS Post Exploitation

Persistenza

pageAWS - EFS Persistence
Impara l'hacking AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Last updated