AWS - EFS Privesc

Support HackTricks

EFS

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

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

elasticfilesystem:DeleteFileSystemPolicy|elasticfilesystem:PutFileSystemPolicy

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

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

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

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

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)

З цією дозволом зловмисник зможе монтувати EFS. Якщо дозвіл на запис за замовчуванням не надано всім, хто може монтувати EFS, він матиме лише доступ для читання.

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

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

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

elasticfilesystem:CreateMountTarget

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

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

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

elasticfilesystem:ModifyMountTargetSecurityGroups

У сценарії, де зловмисник виявляє, що EFS має точку монтування у його підмережі, але жодна група безпеки не дозволяє трафік, він може просто змінити це, модифікувавши вибрані групи безпеки:

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

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

Support HackTricks

Last updated