AWS - EFS Enum

Support HackTricks

EFS

Podstawowe informacje

Amazon Elastic File System (EFS) jest przedstawiany jako w pełni zarządzany, skalowalny i elastyczny system plików w sieci przez AWS. Usługa ułatwia tworzenie i konfigurowanie systemów plików, które mogą być jednocześnie dostępne przez wiele instancji EC2 i inne usługi AWS. Kluczowe cechy EFS obejmują jego zdolność do automatycznego skalowania bez interwencji ręcznej, zapewnianie dostępu o niskim opóźnieniu, wsparcie dla obciążeń o wysokiej przepustowości, gwarancję trwałości danych oraz bezproblemową integrację z różnymi mechanizmami bezpieczeństwa AWS.

Domyślnie folder EFS do zamontowania będzie /, ale może mieć inną nazwę.

Dostęp do sieci

EFS jest tworzony w VPC i będzie domyślnie dostępny we wszystkich podsieciach VPC. Jednak EFS będzie miał Grupę Bezpieczeństwa. Aby dać dostęp do EC2 (lub jakiejkolwiek innej usługi AWS) do zamontowania EFS, należy zezwolić w grupie bezpieczeństwa EFS na regułę przychodzącą NFS (port 2049) z Grupy Bezpieczeństwa EC2.

Bez tego nie będziesz w stanie skontaktować się z usługą NFS.

Aby uzyskać więcej informacji na ten temat, sprawdź: https://stackoverflow.com/questions/38632222/aws-efs-connection-timeout-at-mount

Enumeracja

# 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

Może się zdarzyć, że punkt montowania EFS znajduje się w tej samej VPC, ale w innej podsieci. Jeśli chcesz mieć pewność, że znajdziesz wszystkie punkty EFS, lepiej zeskanować maskę sieciową /16.

Montowanie 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

Domyślnie każdy, kto ma dostęp do sieci do EFS, będzie mógł zamontować, odczytać i zapisać go nawet jako użytkownik root. Jednak polityki systemu plików mogą być wprowadzone, zezwalając tylko na dostęp dla podmiotów z określonymi uprawnieniami. Na przykład, ta polityka systemu plików nie pozwoli nawet na zamontowanie systemu plików, jeśli nie masz uprawnienia 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"
}
}
}
]
}

Lub to zapobiegnie dostępowi anonimowemu:

Zauważ, że aby zamontować systemy plików chronione przez IAM, MUSISZ użyć typu "efs" w poleceniu montowania:

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

Punkty dostępu to specyficzne dla aplikacji punkty wejścia do systemu plików EFS, które ułatwiają zarządzanie dostępem aplikacji do wspólnych zbiorów danych.

Kiedy tworzysz punkt dostępu, możesz określić właściciela i uprawnienia POSIX dla plików i katalogów tworzonych przez punkt dostępu. Możesz również zdefiniować niestandardowy katalog główny dla punktu dostępu, określając istniejący katalog lub tworząc nowy z pożądanymi uprawnieniami. Umożliwia to kontrolowanie dostępu do systemu plików EFS na poziomie aplikacji lub użytkownika, co ułatwia zarządzanie i zabezpieczanie wspólnych danych plikowych.

Możesz zamontować system plików z punktu dostępu za pomocą czegoś takiego jak:

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

Zauważ, że nawet próbując zamontować punkt dostępu, nadal musisz być w stanie skontaktować się z usługą NFS przez sieć, a jeśli EFS ma politykę systemu plików, potrzebujesz wystarczających uprawnień IAM, aby go zamontować.

Punkty dostępu mogą być używane do następujących celów:

  • Uproszczenie zarządzania uprawnieniami: Definiując użytkownika i grupę POSIX dla każdego punktu dostępu, możesz łatwo zarządzać uprawnieniami dostępu dla różnych aplikacji lub użytkowników bez modyfikowania uprawnień systemu plików.

  • Wymuszenie katalogu głównego: Punkty dostępu mogą ograniczać dostęp do konkretnego katalogu w systemie plików EFS, zapewniając, że każda aplikacja lub użytkownik działa w swoim wyznaczonym folderze. Pomaga to zapobiegać przypadkowemu ujawnieniu lub modyfikacji danych.

  • Łatwiejszy dostęp do systemu plików: Punkty dostępu mogą być powiązane z funkcją AWS Lambda lub zadaniem AWS Fargate, co upraszcza dostęp do systemu plików dla aplikacji bezserwerowych i konteneryzowanych.

Privesc

AWS - EFS Privesc

Post Exploitation

AWS - EFS Post Exploitation

Persistence

AWS - EFS Persistence
Wsparcie dla HackTricks

Last updated