AWS - Elastic Beanstalk Enum
Elastic Beanstalk
Amazon Elastic Beanstalk fornece uma plataforma simplificada para implantar, gerenciar e escalar aplicativos 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, bem como 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 seus aplicativos 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, escalabilidade e monitoramento da saúde do aplicativo, permitindo que você se concentre em escrever e implantar seu código.
A infraestrutura criada pelo Elastic Beanstalk é gerenciada por Grupos de Auto Scaling no EC2 (com um balanceador de carga). O que significa que, no final das contas, se você comprometer o host, você deve saber sobre EC2:
AWS - EC2, EBS, ELB, SSM, VPC & VPN EnumAlém disso, se Docker for usado, é possível usar ECS.
AWS - EKS EnumAplicação e Ambientes
No AWS Elastic Beanstalk, os conceitos de "aplicação" e "ambiente" têm propósitos diferentes e desempenham papéis distintos no processo de implantação.
Aplicação
Uma aplicação no Elastic Beanstalk é um contêiner lógico para o código-fonte, ambientes e configurações da sua aplicação. Ela agrupa diferentes versões do seu código de aplicação e permite que você as gerencie como uma única entidade.
Quando você cria uma aplicação, você fornece um nome e uma descrição, mas nenhum recurso é provisionado nesta etapa. É 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 uma versão específica do seu código, que pode ser implantada em um ou mais ambientes.
Ambiente
Um ambiente é uma instância provisionada da sua aplicação rodando na infraestrutura AWS. É onde seu código de aplicação é implantado e executado. O Elastic Beanstalk provisiona os recursos necessários (por exemplo, instâncias EC2, balanceadores de carga, grupos de auto-scaling, 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.
2 tipos de Ambientes
Ambiente de Servidor Web: É projetado para hospedar e servir aplicativos web e APIs. Esses aplicativos 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 auto-scaling para lidar com o tráfego recebido, gerenciar a capacidade e garantir a alta disponibilidade do aplicativo.
Ambiente de Trabalhador: É projetado para processar tarefas em segundo plano, que são frequentemente operações demoradas ou que consomem muitos recursos e que não requerem respostas imediatas aos clientes. O ambiente de trabalhador provisiona recursos como instâncias EC2 e grupos de auto-scaling, mas não possui um balanceador de carga já 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.
Segurança
Ao criar um App no Beanstalk, há 3 opções de segurança muito importantes para escolher:
Par de chaves EC2: Esta será a chave SSH que poderá acessar as instâncias EC2 que executam o aplicativo.
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
aws-elasticbeanstalk-ec2-role
e tem alguns acessos interessantes sobre todo ECS, todo 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. Pelo que sei, um usuário regular da AWS não pode acessar esse papel.
Este papel gerado pela AWS é chamado
aws-elasticbeanstalk-service-role
e usa as políticas gerenciadas pela AWS AWSElasticBeanstalkEnhancedHealth e AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy.
Por padrão, a versão 1 dos metadados está desativada:
Exposição
Os dados do Beanstalk são armazenados em um bucket S3 com o seguinte nome: elasticbeanstalk-<region>-<acc-id>
(se foi criado no console da 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ê obtiver acesso de leitura ao bucket, poderá ler o código-fonte e até encontrar credenciais sensíveis nele.
Se você obtiver acesso de escrita ao bucket, poderá modificar o código-fonte para comprometer o papel IAM que a aplicação está usando na próxima vez que for executada.
Enumeração
Acesso Não Autenticado
AWS - Elastic Beanstalk Unauthenticated EnumPersistência
AWS - Elastic Beanstalk PersistencePrivesc
AWS - Elastic Beanstalk PrivescPós-Exploração
AWS - Elastic Beanstalk Post ExploitationLast updated