AWS - Elastic Beanstalk Enum

Supporta HackTricks

Elastic Beanstalk

Amazon Elastic Beanstalk fornisce una piattaforma semplificata per distribuire, gestire e scalare applicazioni e servizi web. Supporta una varietà di linguaggi di programmazione e framework, come Java, .NET, PHP, Node.js, Python, Ruby e Go, oltre ai container Docker. Il servizio è compatibile con server ampiamente utilizzati, tra cui Apache, Nginx, Passenger e IIS.

Elastic Beanstalk fornisce un modo semplice e flessibile per distribuire le tue applicazioni nel cloud AWS, senza la necessità di preoccuparsi dell'infrastruttura sottostante. Gestisce automaticamente i dettagli del provisioning della capacità, del bilanciamento del carico, della scalabilità e del monitoraggio della salute dell'applicazione, permettendoti di concentrarti sulla scrittura e distribuzione del tuo codice.

L'infrastruttura creata da Elastic Beanstalk è gestita da Autoscaling Groups in EC2 (con un load balancer). Ciò significa che alla fine della giornata, se comprometti l'host, dovresti sapere di più su EC2:

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

Inoltre, se viene utilizzato Docker, è possibile utilizzare ECS.

AWS - EKS Enum

Application & Environments

In AWS Elastic Beanstalk, i concetti di "applicazione" e "ambiente" hanno scopi diversi e ruoli distinti nel processo di distribuzione.

Application

  • Un'applicazione in Elastic Beanstalk è un contenitore logico per il codice sorgente della tua applicazione, ambienti e configurazioni. Raggruppa diverse versioni del tuo codice applicativo e ti consente di gestirle come un'unica entità.

  • Quando crei un'applicazione, fornisci un nome e una descrizione, ma non vengono provisionate risorse in questa fase. È semplicemente un modo per organizzare e gestire il tuo codice e le risorse correlate.

  • Puoi avere più versioni dell'applicazione all'interno di un'applicazione. Ogni versione corrisponde a una specifica release del tuo codice, che può essere distribuita in uno o più ambienti.

Environment

  • Un ambiente è un'istanza provisionata della tua applicazione in esecuzione sull'infrastruttura AWS. È dove il codice della tua applicazione viene distribuito ed eseguito. Elastic Beanstalk provisiona le risorse necessarie (ad esempio, istanze EC2, load balancer, gruppi di auto-scaling, database) in base alla configurazione dell'ambiente.

  • Ogni ambiente esegue una singola versione della tua applicazione, e puoi avere più ambienti per scopi diversi, come sviluppo, test, staging e produzione.

  • Quando crei un ambiente, scegli una piattaforma (ad esempio, Java, .NET, Node.js, ecc.) e un tipo di ambiente (ad esempio, server web o worker). Puoi anche personalizzare la configurazione dell'ambiente per controllare vari aspetti dell'infrastruttura e delle impostazioni dell'applicazione.

2 tipi di Environments

  1. Web Server Environment: È progettato per ospitare e servire applicazioni web e API. Queste applicazioni gestiscono tipicamente richieste HTTP/HTTPS in entrata. L'ambiente del server web provisiona risorse come istanze EC2, load balancer e gruppi di auto-scaling per gestire il traffico in entrata, gestire la capacità e garantire l'alta disponibilità dell'applicazione.

  2. Worker Environment: È progettato per elaborare attività in background, che sono spesso operazioni che richiedono tempo o risorse eccessive e che non richiedono risposte immediate ai clienti. L'ambiente worker provisiona risorse come istanze EC2 e gruppi di auto-scaling, ma non ha un load balancer poiché non gestisce direttamente richieste HTTP/HTTPS. Invece, consuma attività da una Amazon Simple Queue Service (SQS) queue, che funge da buffer tra l'ambiente worker e le attività che elabora.

Security

Quando crei un'App in Beanstalk ci sono 3 opzioni di sicurezza molto importanti da scegliere:

Per impostazione predefinita la versione 1 dei metadati è disabilitata:

Exposure

I dati di Beanstalk sono memorizzati in un bucket S3 con il seguente nome: elasticbeanstalk-<region>-<acc-id>(se è stato creato nella console AWS). All'interno di questo bucket troverai il codice sorgente caricato dell'applicazione.

L'URL della pagina web creata è http://<webapp-name>-env.<random>.<region>.elasticbeanstalk.com/

Se ottieni accesso in lettura sul bucket, puoi leggere il codice sorgente e persino trovare credenziali sensibili su di esso

se ottieni accesso in scrittura sul bucket, potresti modificare il codice sorgente per compromettere il ruolo IAM che l'applicazione sta utilizzando la prossima volta che viene eseguita.

Enumeration

# 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

Accesso Non Autenticato

AWS - Elastic Beanstalk Unauthenticated Enum

Persistenza

AWS - Elastic Beanstalk Persistence

Privesc

AWS - Elastic Beanstalk Privesc

Post Exploitation

AWS - Elastic Beanstalk Post Exploitation
Supporta HackTricks

Last updated