AWS - EFS Enum

Support HackTricks

EFS

Grundinformationen

Amazon Elastic File System (EFS) wird von AWS als vollständig verwaltetes, skalierbares und elastisches Netzwerkdateisystem präsentiert. Der Dienst erleichtert die Erstellung und Konfiguration von Dateisystemen, die gleichzeitig von mehreren EC2-Instanzen und anderen AWS-Diensten zugegriffen werden können. Die Hauptmerkmale von EFS umfassen die Fähigkeit, automatisch ohne manuelles Eingreifen zu skalieren, einen latenzarmen Zugriff bereitzustellen, hochdurchsatzfähige Workloads zu unterstützen, die Datenhaltbarkeit zu garantieren und nahtlos mit verschiedenen AWS-Sicherheitsmechanismen zu integrieren.

Standardmäßig wird der EFS-Ordner, der gemountet werden soll, / sein, könnte jedoch einen anderen Namen haben.

Netzwerkzugang

Ein EFS wird in einer VPC erstellt und wäre standardmäßig in allen VPC-Subnetzen zugänglich. Der EFS wird jedoch eine Sicherheitsgruppe haben. Um einem EC2 (oder einem anderen AWS-Dienst) den Zugriff auf das Mounten des EFS zu gewähren, ist es erforderlich, in der EFS-Sicherheitsgruppe eine eingehende NFS** (Port 2049) Regel von der EC2-Sicherheitsgruppe zuzulassen.

Ohne dies werden Sie nicht in der Lage sein, den NFS-Dienst zu kontaktieren.

Für weitere Informationen, wie dies zu tun ist, siehe: https://stackoverflow.com/questions/38632222/aws-efs-connection-timeout-at-mount

Aufzählung

# 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

Es könnte sein, dass der EFS-Mount-Punkt im selben VPC, aber in einem anderen Subnetz ist. Wenn Sie sicherstellen möchten, dass Sie alle EFS-Punkte finden, wäre es besser, die /16-Netzmaske zu scannen.

Mount 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-Zugriff

Standardmäßig kann jeder mit Netzwerkzugang zum EFS das Dateisystem einbinden, lesen und schreiben, sogar als Root-Benutzer. Es könnten jedoch Dateisystemrichtlinien vorhanden sein, die nur bestimmten Berechtigungen zugewiesene Prinzipale den Zugriff erlauben. Zum Beispiel wird diese Dateisystemrichtlinie nicht einmal das Einbinden des Dateisystems erlauben, wenn Sie nicht die IAM-Berechtigung haben:

{
"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"
}
}
}
]
}

Oder dies wird anonymen Zugriff verhindern:

Beachten Sie, dass Sie zum Einhängen von Dateisystemen, die durch IAM geschützt sind, den Typ "efs" im Einhängebefehl verwenden MÜSSEN:

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

Zugangspunkte sind anwendungsspezifische Einstiegspunkte in ein EFS-Dateisystem, die es einfacher machen, den Zugriff von Anwendungen auf gemeinsame Datensätze zu verwalten.

Wenn Sie einen Zugangspunkt erstellen, können Sie den Eigentümer und die POSIX-Berechtigungen für die über den Zugangspunkt erstellten Dateien und Verzeichnisse spezifizieren. Sie können auch ein benutzerdefiniertes Stammverzeichnis für den Zugangspunkt definieren, entweder indem Sie ein vorhandenes Verzeichnis angeben oder ein neues mit den gewünschten Berechtigungen erstellen. Dies ermöglicht es Ihnen, den Zugriff auf Ihr EFS-Dateisystem pro Anwendung oder pro Benutzer zu steuern, was die Verwaltung und Sicherung Ihrer gemeinsamen Dateidaten erleichtert.

Sie können das Dateisystem von einem Zugangspunkt mit etwas wie:

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

Beachten Sie, dass Sie selbst beim Versuch, einen Zugriffspunkt zu mounten, in der Lage sein müssen, den NFS-Dienst über das Netzwerk zu kontaktieren, und wenn das EFS eine Richtlinie für das Dateisystem hat, benötigen Sie ausreichende IAM-Berechtigungen, um es zu mounten.

Zugriffspunkte können für die folgenden Zwecke verwendet werden:

  • Vereinfachung der Berechtigungsverwaltung: Durch die Definition eines POSIX-Benutzers und einer Gruppe für jeden Zugriffspunkt können Sie die Zugriffsberechtigungen für verschiedene Anwendungen oder Benutzer einfach verwalten, ohne die Berechtigungen des zugrunde liegenden Dateisystems zu ändern.

  • Durchsetzung eines Wurzelverzeichnisses: Zugriffspunkte können den Zugriff auf ein bestimmtes Verzeichnis innerhalb des EFS-Dateisystems einschränken, sodass jede Anwendung oder jeder Benutzer innerhalb seines zugewiesenen Ordners arbeitet. Dies hilft, versehentliche Datenexposition oder -änderung zu verhindern.

  • Einfacherer Zugriff auf das Dateisystem: Zugriffspunkte können mit einer AWS Lambda-Funktion oder einer AWS Fargate-Aufgabe verknüpft werden, was den Zugriff auf das Dateisystem für serverlose und containerisierte Anwendungen vereinfacht.

Privesc

Post Exploitation

Persistence

Unterstützen Sie HackTricks

Last updated