AWS - Elastic Beanstalk Enum

Reading time: 7 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Elastic Beanstalk

Amazon Elastic Beanstalk pruža pojednostavljenu platformu za implementaciju, upravljanje i skaliranje web aplikacija i usluga. Podržava razne programske jezike i okvire, kao što su Java, .NET, PHP, Node.js, Python, Ruby i Go, kao i Docker kontejnere. Usluga je kompatibilna sa široko korišćenim serverima uključujući Apache, Nginx, Passenger i IIS.

Elastic Beanstalk pruža jednostavan i fleksibilan način za implementaciju vaših aplikacija u AWS cloud, bez potrebe da brinete o osnovnoj infrastrukturi. Ona automatski upravlja detaljima kapaciteta provisioning, opterećenja balansiranja, skaliranja i zdravlja aplikacije monitoring, omogućavajući vam da se fokusirate na pisanje i implementaciju vašeg koda.

Infrastruktura koju kreira Elastic Beanstalk upravlja Autoscaling grupama u EC2 (sa load balancer-om). Što znači da na kraju dana, ako kompromitujete host, trebate znati o EC2:

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

Pored toga, ako se koristi Docker, moguće je koristiti ECS.

AWS - EKS Enum

Aplikacija i Okruženja

U AWS Elastic Beanstalk, koncepti "aplikacije" i "okruženja" služe različitim svrhama i imaju različite uloge u procesu implementacije.

Aplikacija

  • Aplikacija u Elastic Beanstalk je logički kontejner za izvorni kod vaše aplikacije, okruženja i konfiguracije. Grupira različite verzije vašeg aplikacionog koda i omogućava vam da njima upravljate kao jednom celinom.
  • Kada kreirate aplikaciju, pružate ime i opis, ali u ovoj fazi se ne provisioniraju resursi. To je jednostavno način da organizujete i upravljate svojim kodom i povezanim resursima.
  • Možete imati više verzija aplikacije unutar jedne aplikacije. Svaka verzija odgovara specifičnom izdanju vašeg koda, koje može biti implementirano u jedno ili više okruženja.

Okruženje

  • Okruženje je provisionirana instanca vaše aplikacije koja radi na AWS infrastrukturi. To je gde se vaš aplikacioni kod implementira i izvršava. Elastic Beanstalk provisionira potrebne resurse (npr. EC2 instance, load balancere, auto-scaling grupe, baze podataka) na osnovu konfiguracije okruženja.
  • Svako okruženje pokreće jednu verziju vaše aplikacije, i možete imati više okruženja za različite svrhe, kao što su razvoj, testiranje, staging i produkcija.
  • Kada kreirate okruženje, birate platformu (npr. Java, .NET, Node.js, itd.) i tip okruženja (npr. web server ili worker). Takođe možete prilagoditi konfiguraciju okruženja da kontrolišete različite aspekte infrastrukture i postavki aplikacije.

2 tipa Okruženja

  1. Web Server Okruženje: Dizajnirano je da hostuje i servira web aplikacije i API-je. Ove aplikacije obično obrađuju dolazne HTTP/HTTPS zahteve. Web server okruženje provisionira resurse kao što su EC2 instance, load balanceri i auto-scaling grupe za upravljanje dolaznim saobraćajem, upravljanje kapacitetom i osiguranje visoke dostupnosti aplikacije.
  2. Worker Okruženje: Dizajnirano je za obradu pozadinskih zadataka, koji su često dugotrajne ili resursno intenzivne operacije koje ne zahtevaju trenutne odgovore klijentima. Worker okruženje provisionira resurse poput EC2 instanci i auto-scaling grupa, ali nema load balancer jer ne obrađuje HTTP/HTTPS zahteve direktno. Umesto toga, konzumira zadatke iz Amazon Simple Queue Service (SQS) reda, koji deluje kao međuspremnik između worker okruženja i zadataka koje obrađuje.

Bezbednost

Kada kreirate aplikaciju u Beanstalk-u, postoje 3 veoma važna bezbednosna opcija za izbor:

Podrazumevano je metadata verzija 1 onemogućena:

Izloženost

Podaci Beanstalk-a se čuvaju u S3 bucket-u sa sledećim imenom: elasticbeanstalk-<region>-<acc-id> (ako je kreiran u AWS konzoli). Unutar ovog bucket-a naći ćete izvorni kod aplikacije.

URL kreirane web stranice je http://<webapp-name>-env.<random>.<region>.elasticbeanstalk.com/

warning

Ako dobijete pristup za čitanje nad bucket-om, možete pročitati izvorni kod i čak pronaći osetljive akreditive u njemu.

Ako dobijete pristup za pisanje nad bucket-om, mogli biste modifikovati izvorni kod da kompromitujete IAM ulogu koju aplikacija koristi sledeći put kada se izvrši.

Enumeracija

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

Neautentifikovani Pristup

AWS - Elastic Beanstalk Unauthenticated Enum

Persistencija

AWS - Elastic Beanstalk Persistence

Povišenje Privilegija

AWS - Elastic Beanstalk Privesc

Post Eksploatacija

AWS - Elastic Beanstalk Post Exploitation

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks