AWS - EFS Enum

从零开始学习 AWS 黑客技术,成为专家 htARTE(HackTricks AWS 红队专家)

支持 HackTricks 的其他方式:

EFS

基本信息

Amazon Elastic File System(EFS)由 AWS 提供,被描述为完全托管、可扩展和弹性的网络文件系统。该服务便于创建和配置文件系统,可同时被多个 EC2 实例和其他 AWS 服务访问。EFS 的关键特性包括自动扩展而无需手动干预、提供低延迟访问、支持高吞吐量工作负载、保证数据耐久性,并与各种 AWS 安全机制无缝集成。

默认情况下,要挂载的 EFS 文件夹为**/,但可能有不同的名称**。

网络访问

EFS 创建在 VPC 中,默认情况下可在所有 VPC 子网中访问。但是,EFS 将有一个安全组。为了允许 EC2(或任何其他 AWS 服务)访问挂载 EFS,需要在 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的网络访问权限的人都可以挂载,以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

访问点

访问点进入 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任务关联,简化无服务器和容器化应用程序的文件系统访问。

提权

AWS - EFS Privesc

后渗透

AWS - EFS Post Exploitation

持久化

AWS - EFS Persistence
从零开始学习AWS黑客技术,成为专家 htARTE (HackTricks AWS Red Team Expert)!

支持HackTricks的其他方式:

Last updated