AWS - EFS Enum

htARTE (HackTricks AWS Red Team 전문가)를 통해 AWS 해킹을 처음부터 전문가까지 배우세요!

HackTricks를 지원하는 다른 방법:

EFS

기본 정보

Amazon Elastic File System (EFS)는 AWS에 의해 완전히 관리되며 확장 가능하고 탄력 있는 네트워크 파일 시스템으로 제공됩니다. 이 서비스는 여러 EC2 인스턴스 및 다른 AWS 서비스에서 동시에 액세스할 수 있는 파일 시스템의 생성 및 구성을 용이하게 합니다. EFS의 주요 기능은 수동 개입 없이 자동으로 확장할 수 있는 능력, 저지연 액세스 제공, 고처리량 워크로드 지원, 데이터 내구성 보장 및 다양한 AWS 보안 메커니즘과의 원활한 통합을 포함합니다.

기본적으로, 마운트할 EFS 폴더는 **/**이지만 다른 이름을 가질 수 있습니다.

네트워크 액세스

EFS는 VPC에서 생성되며 기본적으로 모든 VPC 하위 네트워크에서 액세스할 수 있습니다. 그러나 EFS에는 보안 그룹이 있을 것입니다. EFS를 마운트할 EC2에 액세스하려면 EFS 보안 그룹에서 EC2 보안 그룹으로부터의 입방향 NFS(2049 포트) 규칙을 허용해야 합니다.

이를 하지 않으면 NFS 서비스에 연락할 수 없습니다.

이를 수행하는 방법에 대한 자세한 정보는 여기를 참조하세요: https://stackoverflow.com/questions/38632222/aws-efs-connection-timeout-at-mount

열거

# 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

액세스 포인트

액세스 포인트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

Post Exploitation

Persistence

htARTE (HackTricks AWS Red Team Expert)를 통해 제로부터 영웅이 될 때까지 AWS 해킹을 배우세요!

HackTricks를 지원하는 다른 방법:

最終更新