AWS - EFS Enum

Support HackTricks

EFS

Informações Básicas

O Amazon Elastic File System (EFS) é apresentado como um sistema de arquivos de rede totalmente gerenciado, escalável e elástico pela AWS. O serviço facilita a criação e configuração de sistemas de arquivos que podem ser acessados simultaneamente por várias instâncias EC2 e outros serviços da AWS. As principais características do EFS incluem sua capacidade de escalar automaticamente sem intervenção manual, provisionar acesso de baixa latência, suportar cargas de trabalho de alto rendimento, garantir durabilidade dos dados e integrar-se perfeitamente com vários mecanismos de segurança da AWS.

Por padrão, a pasta do EFS a ser montada será /, mas pode ter um nome diferente.

Acesso à Rede

Um EFS é criado em uma VPC e seria por padrão acessível em todas as sub-redes da VPC. No entanto, o EFS terá um Grupo de Segurança. Para dar acesso a um EC2 (ou qualquer outro serviço da AWS) para montar o EFS, é necessário permitir no grupo de segurança do EFS uma regra de entrada NFS (porta 2049) do Grupo de Segurança do EC2.

Sem isso, você não poderá contatar o serviço NFS.

Para mais informações sobre como fazer isso, consulte: https://stackoverflow.com/questions/38632222/aws-efs-connection-timeout-at-mount

Enumeração

# 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

Pode ser que o ponto de montagem do EFS esteja dentro da mesma VPC, mas em uma sub-rede diferente. Se você quiser ter certeza de que encontra todos os pontos EFS, seria melhor escanear a máscara de rede /16.

Montar 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/

Acesso IAM

Por padrão, qualquer pessoa com acesso à rede ao EFS poderá montar, ler e escrever nele, mesmo como usuário root. No entanto, políticas de sistema de arquivos podem estar em vigor permitindo apenas que principais com permissões específicas acessem. Por exemplo, esta política de sistema de arquivos não permitirá nem mesmo montar o sistema de arquivos se você não tiver a permissão 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"
}
}
}
]
}

Ou isso impedirá o acesso anônimo:

Observe que para montar sistemas de arquivos protegidos por IAM, você DEVE usar o tipo "efs" no comando de montagem:

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

Os pontos de acesso são pontos de entrada específicos de aplicação em um sistema de arquivos EFS que facilitam o gerenciamento do acesso da aplicação a conjuntos de dados compartilhados.

Quando você cria um ponto de acesso, pode especificar o proprietário e as permissões POSIX para os arquivos e diretórios criados através do ponto de acesso. Você também pode definir um diretório raiz personalizado para o ponto de acesso, seja especificando um diretório existente ou criando um novo com as permissões desejadas. Isso permite que você controle o acesso ao seu sistema de arquivos EFS com base em cada aplicação ou usuário, facilitando o gerenciamento e a segurança dos seus dados de arquivo compartilhados.

Você pode montar o sistema de arquivos a partir de um ponto de acesso com algo como:

# 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/

Observe que, mesmo tentando montar um ponto de acesso, você ainda precisa ser capaz de contatar o serviço NFS via rede, e se o EFS tiver uma política de sistema de arquivos, você precisa de permissões IAM suficientes para montá-lo.

Os pontos de acesso podem ser usados para os seguintes propósitos:

  • Simplificar a gestão de permissões: Ao definir um usuário e grupo POSIX para cada ponto de acesso, você pode gerenciar facilmente as permissões de acesso para diferentes aplicações ou usuários sem modificar as permissões do sistema de arquivos subjacente.

  • Impor um diretório raiz: Os pontos de acesso podem restringir o acesso a um diretório específico dentro do sistema de arquivos EFS, garantindo que cada aplicação ou usuário opere dentro de sua pasta designada. Isso ajuda a prevenir a exposição acidental de dados ou modificação.

  • Acesso mais fácil ao sistema de arquivos: Os pontos de acesso podem ser associados a uma função AWS Lambda ou a uma tarefa AWS Fargate, simplificando o acesso ao sistema de arquivos para aplicações sem servidor e containerizadas.

Privesc

Pós Exploração

Persistência

Support HackTricks

Last updated