AWS - EFS Privesc

Wesprzyj HackTricks

EFS

Więcej informacji o EFS w:

AWS - EFS Enum

Pamiętaj, że aby zamontować EFS, musisz znajdować się w podsieci, w której EFS jest wystawiony i mieć do niego dostęp (grupy zabezpieczeń). Jeśli tak się dzieje, domyślnie zawsze będziesz mógł go zamontować, jednak jeśli jest chroniony przez zasady IAM, musisz mieć dodatkowe uprawnienia wymienione tutaj, aby uzyskać do niego dostęp.

elasticfilesystem:DeleteFileSystemPolicy|elasticfilesystem:PutFileSystemPolicy

Z dowolnymi z tych uprawnień atakujący może zmienić zasadę systemu plików, aby dać ci do niego dostęp, lub po prostu usunąć ją, aby został przyznany domyślny dostęp.

Aby usunąć zasadę:

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 mógł zamontować EFS. Jeśli uprawnienie do zapisu nie jest domyślnie udzielane 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żywane do zapisywania w systemie plików po jego zamontowaniu oraz do dostępu do tego systemu plików jako root.

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

elasticfilesystem:CreateMountTarget

Jeśli atakujący znajduje się w podsieci, gdzie nie istnieje żaden punkt montowania EFS, może po prostu utworzyć taki 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>

Potencjalne skutki: Pośrednie eskalowanie uprawnień poprzez zlokalizowanie wrażliwych informacji w systemie plików.

elasticfilesystem:ModifyMountTargetSecurityGroups

W scenariuszu, w którym atakujący odkryje, że EFS ma punkt montowania w swojej podsieci, ale żadna grupa zabezpieczeń nie zezwala na ruch, może po prostu zmienić to, modyfikując wybrane grupy zabezpieczeń:

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

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

Wesprzyj HackTricks

Last updated