AWS - EFS Enum

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o 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, fornecer acesso de baixa latência, suportar cargas de trabalho de alto rendimento, garantir a durabilidade dos dados e integrar-se perfeitamente com vários mecanismos de segurança da AWS.

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

Acesso à Rede

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

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

Para mais informações sobre como fazer isso, verifique: 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 encontrar todos os pontos do EFS, seria melhor escanear a máscara de sub-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 do EFS poderá montá-lo, ler e escrever nele, mesmo como usuário root. No entanto, políticas de Sistema de Arquivos podem estar em vigor permitindo apenas que princípios 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 irá impedir o acesso anônimo:

Note que para montar sistemas de arquivos protegidos pelo 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

Pontos de Acesso

Pontos de acesso são pontos de entrada específicos de aplicativos em um sistema de arquivos EFS que facilitam a gestão do acesso do aplicativo a conjuntos de dados compartilhados.

Ao criar um ponto de acesso, você pode especificar o proprietário e as permissões POSIX para os arquivos e diretórios criados por meio 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 aplicativos ou usuários específicos, facilitando a gestão e segurança dos seus dados de arquivos compartilhados.

Você pode montar o Sistema de Arquivos a partir de um ponto de acesso da seguinte maneira:

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

Note que mesmo ao tentar montar um ponto de acesso, você ainda precisa ser capaz de entrar em contato com o serviço NFS via rede, e se o EFS tiver uma política de sistema de arquivos, você precisa ter permissões IAM suficientes para montá-lo.

Os pontos de acesso podem ser usados para os seguintes fins:

  • Simplificar o gerenciamento 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 aplicativos 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 aplicativo ou usuário opere dentro de sua pasta designada. Isso ajuda a evitar exposição ou modificação acidental de dados.

  • 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 aplicativos serverless e containerizados.

Privilégios Elevados

pageAWS - EFS Privesc

Pós-Exploração

pageAWS - EFS Post Exploitation

Persistência

pageAWS - EFS Persistence
Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

Última actualización