AWS - EFS Enum

Support HackTricks

EFS

基本情報

Amazon Elastic File System (EFS) は、AWS によって 完全に管理され、スケーラブルで弾力性のあるネットワークファイルシステム として提供されています。このサービスは、複数の EC2 インスタンスや他の AWS サービスによって同時にアクセスできる ファイルシステム の作成と構成を容易にします。EFS の主な機能には、手動介入なしで自動的にスケールする能力、低遅延アクセスの提供、高スループットワークロードのサポート、データの耐久性の保証、さまざまな AWS セキュリティメカニズムとのシームレスな統合が含まれます。

デフォルトでは、マウントする EFS フォルダーは / ですが、異なる名前を持つこともあります。

ネットワークアクセス

EFS は VPC 内に作成され、デフォルトではすべての VPC サブネットワークでアクセス可能です。ただし、EFS にはセキュリティグループがあります。EFS をマウントするために EC2(または他の AWS サービス)にアクセスを許可するには、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

HackTricksをサポートする

Last updated