AWS - EFS Privesc

Reading time: 4 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks

EFS

Більше інформації про EFS у:

AWS - EFS Enum

Пам'ятайте, що щоб змонтувати EFS, вам потрібно бути в підмережі, де EFS доступний, і мати доступ до нього (security groups). Якщо це виконано, за замовчуванням ви завжди зможете його змонтувати, однак якщо він захищений політиками IAM, вам потрібно мати додаткові дозволи, зазначені тут, щоб отримати до нього доступ.

elasticfilesystem:DeleteFileSystemPolicy|elasticfilesystem:PutFileSystemPolicy

Маючи будь-який з цих дозволів, зловмисник може змінити політику файлової системи, щоб надати собі доступ до неї, або просто видалити її, щоб був наданий доступ за замовчуванням.

Щоб видалити політику:

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

Щоб змінити це:

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)

З цим дозволом зловмисник зможе mount the EFS. Якщо write permission не надається за замовчуванням усім, хто може mount the EFS, він матиме лише read access.

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

Додаткові дозволи elasticfilesystem:ClientRootAccess та elasticfilesystem:ClientWrite можна використати для запису в файлову систему після її монтування та для доступу до цієї файлової системи як root.

Potential Impact: Непряма privesc шляхом знаходження чутливих даних у файловій системі.

elasticfilesystem:CreateMountTarget

Якщо атакуючий перебуває в підмережі, де немає mount target для EFS. Він може просто створити його у своїй підмережі з цим дозволом:

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>

Potential Impact: Indirect privesc шляхом знаходження чутливої інформації у файловій системі.

elasticfilesystem:ModifyMountTargetSecurityGroups

У сценарії, коли зловмисник виявляє, що EFS має mount target у своїй підмережі, але no security group is allowing the traffic, він може просто change that modifying the selected security groups:

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

Потенційний вплив: Непряме privesc шляхом знаходження конфіденційної інформації у файловій системі.

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks