AWS - EFS Enum

ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)

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 Access

デフォルトでは、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

pageAWS - EFS Privesc

Post Exploitation

pageAWS - EFS Post Exploitation

Persistence

pageAWS - EFS Persistence
htARTE(HackTricks AWS Red Team Expert)を使って、ゼロからヒーローまでAWSハッキングを学びましょう!

HackTricksをサポートする他の方法:

最終更新