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는 보안 그룹을 가집니다. EFS를 마운트하기 위해 EC2(또는 다른 AWS 서비스)에 접근을 허용하려면, EFS 보안 그룹에서 EC2 보안 그룹으로부터의 인바운드 NFS(2049 포트) 규칙을 허용해야 합니다.

이것이 없으면 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 접근

기본적으로 EFS에 대한 네트워크 접근 권한이 있는 누구나 루트 사용자로서도 마운트하고, 읽고 쓸 수 있습니다. 그러나 파일 시스템 정책이 설정되어 특정 권한을 가진 주체만 접근할 수 있도록 할 수 있습니다. 예를 들어, 이 파일 시스템 정책은 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

Access pointsEFS 파일 시스템에 대한 애플리케이션-특정 진입점으로, 공유 데이터 세트에 대한 애플리케이션 액세스를 관리하는 데 더 쉽게 만들어 줍니다.

액세스 포인트를 생성할 때, 액세스 포인트를 통해 생성된 파일 및 디렉토리에 대한 소유자 및 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

Post Exploitation

Persistence

HackTricks 지원하기

Last updated