AWS - EFS Enum

Support HackTricks

EFS

Basic Information

Amazon Elastic File System (EFS) представлений як повністю керована, масштабована та еластична мережна файлова система від AWS. Сервіс полегшує створення та налаштування файлових систем, до яких можуть одночасно отримувати доступ кілька EC2 екземплярів та інших сервісів AWS. Ключові особливості EFS включають його здатність автоматично масштабуватися без ручного втручання, забезпечувати доступ з низькою затримкою, підтримувати навантаження з високою пропускною здатністю, гарантувати довговічність даних та безшовно інтегруватися з різними механізмами безпеки AWS.

За замовчуванням, папка EFS для монтування буде /, але вона може мати іншу назву.

Network Access

EFS створюється в VPC і буде за замовчуванням доступний у всіх підмережах VPC. Однак EFS матиме групу безпеки. Щоб надати доступ EC2 (або будь-якому іншому сервісу AWS) для монтування EFS, потрібно дозволити в групі безпеки EFS вхідне правило NFS (порт 2049) з групи безпеки EC2.

Без цього ви не зможете зв'язатися з NFS сервісом.

Для отримання додаткової інформації про те, як це зробити, перегляньте: https://stackoverflow.com/questions/38632222/aws-efs-connection-timeout-at-mount

Enumeration

# Get filesystems and access policies (if any)
aws efs describe-file-systems
aws efs describe-file-system-policy --file-system-id <id>

# Get subnetworks and IP addresses where you can find the file system
aws efs describe-mount-targets --file-system-id <id>
aws efs describe-mount-target-security-groups --mount-target-id <id>
aws ec2 describe-security-groups --group-ids <sg_id>

# Get other access points
aws efs describe-access-points

# Get replication configurations
aws efs describe-replication-configurations

# Search for NFS in EC2 networks
sudo nmap -T4 -Pn -p 2049 --open 10.10.10.0/20 # or /16 to be sure

Можливо, що точка монтування EFS знаходиться в тій же VPC, але в іншій підмережі. Якщо ви хочете бути впевненими, що знайдете всі точки EFS, краще просканувати мережу з маскою /16.

Монтування EFS

sudo mkdir /efs

## Mount found
sudo apt install nfs-common
sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport <IP>:/ /efs

## Mount with efs type
## You need to have installed the package amazon-efs-utils
sudo yum install amazon-efs-utils # If centos
sudo apt-get install amazon-efs-utils # If ubuntu
sudo mount -t efs <file-system-id/EFS DNS name>:/ /efs/

IAM Access

За замовчуванням будь-хто з мережевим доступом до EFS зможе монтувати, читати та записувати його навіть як користувач root. Однак, політики файлової системи можуть бути встановлені, дозволяючи доступ лише принципам з конкретними дозволами. Наприклад, ця політика файлової системи не дозволить навіть змонтувати файлову систему, якщо у вас немає дозволу IAM:

{
"Version": "2012-10-17",
"Id": "efs-policy-wizard-2ca2ba76-5d83-40be-8557-8f6c19eaa797",
"Statement": [
{
"Sid": "efs-statement-e7f4b04c-ad75-4a7f-a316-4e5d12f0dbf5",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "",
"Resource": "arn:aws:elasticfilesystem:us-east-1:318142138553:file-system/fs-0ab66ad201b58a018",
"Condition": {
"Bool": {
"elasticfilesystem:AccessedViaMountTarget": "true"
}
}
}
]
}

Або це запобігатиме анонімному доступу:

Зверніть увагу, що для монтування файлових систем, захищених IAM, ВИ ПОВИННІ використовувати тип "efs" у команді монтування:

sudo mkdir /efs
sudo mount -t efs -o tls,iam  <file-system-id/EFS DNS name>:/ /efs/
# To use a different pforile from ~/.aws/credentials
# You can use: -o tls,iam,awsprofile=namedprofile

Access Points

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

Коли ви створюєте точку доступу, ви можете вказати власника та POSIX дозволи для файлів і каталогів, створених через точку доступу. Ви також можете визначити власний кореневий каталог для точки доступу, вказавши існуючий каталог або створивши новий з бажаними дозволами. Це дозволяє вам контролювати доступ до вашої EFS файлової системи на основі кожного застосунку або користувача, що спрощує управління та захист ваших спільних файлових даних.

Ви можете змонтувати файлову систему з точки доступу за допомогою чогось на кшталт:

# Use IAM if you need to use iam permissions
sudo mount -t efs -o tls,[iam],accesspoint=<access-point-id> \
<file-system-id/EFS DNS> /efs/

Зверніть увагу, що навіть намагаючись змонтувати точку доступу, вам все ще потрібно мати можливість зв'язатися з NFS-сервісом через мережу, і якщо EFS має політику файлової системи, вам потрібні достатні IAM дозволи для її монтування.

Точки доступу можуть використовуватися для наступних цілей:

  • Спрощення управління дозволами: Визначивши POSIX користувача та групу для кожної точки доступу, ви можете легко керувати дозволами доступу для різних додатків або користувачів, не змінюючи дозволи основної файлової системи.

  • Забезпечення кореневої директорії: Точки доступу можуть обмежити доступ до конкретної директорії в файловій системі EFS, забезпечуючи, що кожен додаток або користувач працює в своїй призначеній папці. Це допомагає запобігти випадковому витоку або модифікації даних.

  • Легший доступ до файлової системи: Точки доступу можуть бути асоційовані з функцією AWS Lambda або завданням AWS Fargate, спрощуючи доступ до файлової системи для безсерверних і контейнеризованих додатків.

Privesc

AWS - EFS Privesc

Post Exploitation

AWS - EFS Post Exploitation

Persistence

AWS - EFS Persistence
Підтримайте HackTricks

Last updated