AWS - Elastic Beanstalk Enum

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks

Elastic Beanstalk

Amazon Elastic Beanstalk fournit une plateforme simplifiĂ©e pour dĂ©ployer, gĂ©rer et mettre Ă  l’échelle des applications et services web. Il prend en charge une variĂ©tĂ© de langages de programmation et de frameworks, tels que Java, .NET, PHP, Node.js, Python, Ruby et Go, ainsi que des conteneurs Docker. Le service est compatible avec des serveurs largement utilisĂ©s, y compris Apache, Nginx, Passenger et IIS.

Elastic Beanstalk offre un moyen simple et flexible de dĂ©ployer vos applications dans le cloud AWS, sans avoir Ă  se soucier de l’infrastructure sous-jacente. Il gĂšre automatiquement les dĂ©tails de la provisionnement de capacitĂ©, de l’équilibrage de charge, de la mise Ă  l’échelle et de la surveillance de la santĂ© des applications, vous permettant de vous concentrer sur l’écriture et le dĂ©ploiement de votre code.

L’infrastructure créée par Elastic Beanstalk est gĂ©rĂ©e par des Groupes d’Autoscaling dans EC2 (avec un Ă©quilibreur de charge). Ce qui signifie qu’à la fin de la journĂ©e, si vous compromettez l’hĂŽte, vous devez connaĂźtre EC2 :

AWS - EC2, EBS, ELB, SSM, VPC & VPN Enum

De plus, si Docker est utilisĂ©, il est possible d’utiliser ECS.

AWS - EKS Enum

Application & Environnements

Dans AWS Elastic Beanstalk, les concepts d’une “application” et d’un “environnement” servent des objectifs diffĂ©rents et ont des rĂŽles distincts dans le processus de dĂ©ploiement.

Application

  • Une application dans Elastic Beanstalk est un conteneur logique pour le code source, les environnements et les configurations de votre application. Elle regroupe diffĂ©rentes versions de votre code d’application et vous permet de les gĂ©rer en tant qu’entitĂ© unique.
  • Lorsque vous crĂ©ez une application, vous fournissez un nom et une description, mais aucune ressource n’est provisionnĂ©e Ă  ce stade. C’est simplement un moyen d’organiser et de gĂ©rer votre code et les ressources associĂ©es.
  • Vous pouvez avoir plusieurs versions d’application au sein d’une application. Chaque version correspond Ă  une version spĂ©cifique de votre code, qui peut ĂȘtre dĂ©ployĂ©e dans un ou plusieurs environnements.

Environnement

  • Un environnement est une instance provisionnĂ©e de votre application fonctionnant sur l’infrastructure AWS. C’est lĂ  oĂč le code de votre application est dĂ©ployĂ© et exĂ©cutĂ©. Elastic Beanstalk provisionne les ressources nĂ©cessaires (par exemple, instances EC2, Ă©quilibreurs de charge, groupes d’auto-scaling, bases de donnĂ©es) en fonction de la configuration de l’environnement.
  • Chaque environnement exĂ©cute une seule version de votre application, et vous pouvez avoir plusieurs environnements pour diffĂ©rents objectifs, tels que le dĂ©veloppement, les tests, la mise en scĂšne et la production.
  • Lorsque vous crĂ©ez un environnement, vous choisissez une plateforme (par exemple, Java, .NET, Node.js, etc.) et un type d’environnement (par exemple, serveur web ou travailleur). Vous pouvez Ă©galement personnaliser la configuration de l’environnement pour contrĂŽler divers aspects de l’infrastructure et des paramĂštres de l’application.

2 types d’Environnements

  1. Environnement de Serveur Web : Il est conçu pour hĂ©berger et servir des applications web et des API. Ces applications gĂšrent gĂ©nĂ©ralement les requĂȘtes HTTP/HTTPS entrantes. L’environnement de serveur web provisionne des ressources telles que des instances EC2, des Ă©quilibreurs de charge et des groupes d’auto-scaling pour gĂ©rer le trafic entrant, gĂ©rer la capacitĂ© et garantir la haute disponibilitĂ© de l’application.
  2. Environnement de Travailleur : Il est conçu pour traiter des tĂąches en arriĂšre-plan, qui sont souvent des opĂ©rations longues ou gourmandes en ressources qui ne nĂ©cessitent pas de rĂ©ponses immĂ©diates aux clients. L’environnement de travailleur provisionne des ressources comme des instances EC2 et des groupes d’auto-scaling, mais il n’a pas d’équilibreur de charge car il ne gĂšre pas directement les requĂȘtes HTTP/HTTPS. Au lieu de cela, il consomme des tĂąches Ă  partir d’une file d’attente Amazon Simple Queue Service (SQS), qui agit comme un tampon entre l’environnement de travailleur et les tĂąches qu’il traite.

Sécurité

Lors de la crĂ©ation d’une application dans Beanstalk, il y a 3 options de sĂ©curitĂ© trĂšs importantes Ă  choisir :

  • Paire de clĂ©s EC2 : Ce sera la clĂ© SSH qui pourra accĂ©der aux instances EC2 exĂ©cutant l’application.
  • Profil d’instance IAM : C’est le profil d’instance que les instances auront (privilĂšges IAM).
  • Le rĂŽle gĂ©nĂ©rĂ© automatiquement s’appelle aws-elasticbeanstalk-ec2-role et a des accĂšs intĂ©ressants sur tous les ECS, tous les SQS, DynamoDB elasticbeanstalk et elasticbeanstalk S3 en utilisant les politiques gĂ©rĂ©es par AWS : AWSElasticBeanstalkWebTier, AWSElasticBeanstalkMulticontainerDocker, AWSElasticBeanstalkWorkerTier.
  • RĂŽle de service : C’est le rĂŽle que le service AWS utilisera pour effectuer toutes les actions nĂ©cessaires. A ma connaissance, un utilisateur AWS ordinaire ne peut pas accĂ©der Ă  ce rĂŽle.
  • Ce rĂŽle gĂ©nĂ©rĂ© par AWS s’appelle aws-elasticbeanstalk-service-role et utilise les politiques gĂ©rĂ©es par AWS AWSElasticBeanstalkEnhancedHealth et AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy

Par défaut, la version de métadonnées 1 est désactivée :

Exposition

Les donnĂ©es de Beanstalk sont stockĂ©es dans un bucket S3 avec le nom suivant : elasticbeanstalk-<region>-<acc-id> (si elles ont Ă©tĂ© créées dans la console AWS). À l’intĂ©rieur de ce bucket, vous trouverez le code source de l’application tĂ©lĂ©chargĂ©.

L’URL de la page web créée est http://<webapp-name>-env.<random>.<region>.elasticbeanstalk.com/

Warning

Si vous obtenez un accĂšs en lecture sur le bucket, vous pouvez lire le code source et mĂȘme trouver des identifiants sensibles dessus.

Si vous obtenez un accĂšs en Ă©criture sur le bucket, vous pourriez modifier le code source pour compromettre le rĂŽle IAM que l’application utilise la prochaine fois qu’elle est exĂ©cutĂ©e.

ÉnumĂ©ration

# Find S3 bucket
ACCOUNT_NUMBER=<account_number>
for r in us-east-1 us-east-2 us-west-1 us-west-2 ap-south-1 ap-south-2 ap-northeast-1 ap-northeast-2 ap-northeast-3 ap-southeast-1 ap-southeast-2 ap-southeast-3 ca-central-1 eu-central-1 eu-central-2 eu-west-1 eu-west-2 eu-west-3 eu-north-1 sa-east-1 af-south-1 ap-east-1 eu-south-1 eu-south-2 me-south-1 me-central-1; do aws s3 ls elasticbeanstalk-$r-$ACCOUNT_NUMBER 2>/dev/null && echo "Found in: elasticbeanstalk-$r-$ACCOUNT_NUMBER"; done

# Get apps and URLs
aws elasticbeanstalk describe-applications # List apps
aws elasticbeanstalk describe-application-versions # Get apps & bucket name with source code
aws elasticbeanstalk describe-environments # List envs
aws elasticbeanstalk describe-environments | grep -E "EndpointURL|CNAME"
aws elasticbeanstalk describe-configuration-settings --application-name <app_name> --environment-name <env_name>
aws elasticbeanstalk describe-environment-resources --environment-name <env_name> # Get env info such as SQS used queues
aws elasticbeanstalk describe-instances-health --environment-name <env_name> # Get the instances of an environment

# Get events
aws elasticbeanstalk describe-events

AccÚs non authentifié

AWS - Elastic Beanstalk Unauthenticated Enum

Persistance

AWS - Elastic Beanstalk Persistence

ÉlĂ©vation de privilĂšges

AWS - Elastic Beanstalk Privesc

Post-exploitation

AWS - Elastic Beanstalk Post Exploitation

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks