AWS - Elastic Beanstalk Enum
Last updated
Last updated
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Amazon Elastic Beanstalk fornece uma plataforma simplificada para implantar, gerenciar e escalar aplicações e serviços web. Ele suporta uma variedade de linguagens de programação e frameworks, como Java, .NET, PHP, Node.js, Python, Ruby e Go, além de contêineres Docker. O serviço é compatível com servidores amplamente utilizados, incluindo Apache, Nginx, Passenger e IIS.
Elastic Beanstalk fornece uma maneira simples e flexível de implantar suas aplicações na nuvem AWS, sem a necessidade de se preocupar com a infraestrutura subjacente. Ele automaticamente lida com os detalhes de provisionamento de capacidade, balanceamento de carga, escalonamento e monitoramento da saúde da aplicação, permitindo que você se concentre em escrever e implantar seu código.
A infraestrutura criada pelo Elastic Beanstalk é gerenciada por Grupos de Autoscaling em EC2 (com um balanceador de carga). O que significa que, no final do dia, se você comprometer o host, você deve saber sobre o EC2:
Além disso, se o Docker for usado, é possível usar ECS.
No AWS Elastic Beanstalk, os conceitos de "aplicação" e "ambiente" servem a propósitos diferentes e têm papéis distintos no processo de implantação.
Uma aplicação no Elastic Beanstalk é um container lógico para o código-fonte, ambientes e configurações da sua aplicação. Ela agrupa diferentes versões do código da sua aplicação e permite que você as gerencie como uma única entidade.
Quando você cria uma aplicação, você fornece um nome e descrição, mas nenhum recurso é provisionado nesta fase. É simplesmente uma maneira de organizar e gerenciar seu código e recursos relacionados.
Você pode ter múltiplas versões de aplicação dentro de uma aplicação. Cada versão corresponde a um lançamento específico do seu código, que pode ser implantado em um ou mais ambientes.
Um ambiente é uma instância provisionada da sua aplicação rodando na infraestrutura da AWS. É onde o código da sua aplicação é implantado e executado. O Elastic Beanstalk provisiona os recursos necessários (por exemplo, instâncias EC2, balanceadores de carga, grupos de autoescalonamento, bancos de dados) com base na configuração do ambiente.
Cada ambiente executa uma única versão da sua aplicação, e você pode ter múltiplos ambientes para diferentes propósitos, como desenvolvimento, teste, homologação e produção.
Quando você cria um ambiente, você escolhe uma plataforma (por exemplo, Java, .NET, Node.js, etc.) e um tipo de ambiente (por exemplo, servidor web ou trabalhador). Você também pode personalizar a configuração do ambiente para controlar vários aspectos da infraestrutura e das configurações da aplicação.
Ambiente de Servidor Web: É projetado para hospedar e servir aplicações web e APIs. Essas aplicações normalmente lidam com solicitações HTTP/HTTPS recebidas. O ambiente de servidor web provisiona recursos como instâncias EC2, balanceadores de carga e grupos de autoescalonamento para lidar com o tráfego recebido, gerenciar capacidade e garantir a alta disponibilidade da aplicação.
Ambiente de Trabalhador: É projetado para processar tarefas em segundo plano, que são frequentemente operações demoradas ou intensivas em recursos que não requerem respostas imediatas aos clientes. O ambiente de trabalhador provisiona recursos como instâncias EC2 e grupos de autoescalonamento, mas não possui um balanceador de carga uma vez que não lida diretamente com solicitações HTTP/HTTPS. Em vez disso, ele consome tarefas de uma fila do Amazon Simple Queue Service (SQS), que atua como um buffer entre o ambiente de trabalhador e as tarefas que ele processa.
Ao criar um App no Beanstalk, há 3 opções de segurança muito importantes a serem escolhidas:
Par de chaves EC2: Esta será a chave SSH que poderá acessar as instâncias EC2 executando o app.
Perfil de instância IAM: Este é o perfil de instância que as instâncias terão (privilégios IAM).
O papel gerado automaticamente é chamado de aws-elasticbeanstalk-ec2-role
e tem alguns acessos interessantes sobre todo o ECS, todo o SQS, DynamoDB elasticbeanstalk e elasticbeanstalk S3 usando as políticas gerenciadas pela AWS: AWSElasticBeanstalkWebTier, AWSElasticBeanstalkMulticontainerDocker, AWSElasticBeanstalkWorkerTier.
Papel de serviço: Este é o papel que o serviço AWS usará para realizar todas as ações necessárias. Até onde sei, um usuário regular da AWS não pode acessar esse papel.
Este papel gerado pela AWS é chamado de aws-elasticbeanstalk-service-role
e usa as políticas gerenciadas pela AWS AWSElasticBeanstalkEnhancedHealth e AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy
Por padrão, a versão de metadados 1 está desativada:
Os dados do Beanstalk são armazenados em um bucket S3 com o seguinte nome: elasticbeanstalk-<region>-<acc-id>
(se foi criado no console AWS). Dentro deste bucket você encontrará o código-fonte da aplicação carregado.
A URL da página web criada é http://<webapp-name>-env.<random>.<region>.elasticbeanstalk.com/
Se você obter acesso de leitura sobre o bucket, você pode ler o código-fonte e até encontrar credenciais sensíveis nele.
Se você obter acesso de gravação sobre o bucket, você poderia modificar o código-fonte para comprometer o papel IAM que a aplicação está usando na próxima vez que for executada.
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)