AWS - Elastic Beanstalk Enum

Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Elastic Beanstalk

Amazon Elastic Beanstalk bied 'n vereenvoudigde platform vir implementering, bestuur en skaal van webtoepassings en -dienste. Dit ondersteun 'n verskeidenheid programmeertaale en raamwerke, soos Java, .NET, PHP, Node.js, Python, Ruby, en Go, asook Docker-houers. Die diens is verenigbaar met algemeen gebruikte bedieners insluitend Apache, Nginx, Passenger, en IIS.

Elastic Beanstalk bied 'n eenvoudige en aanpasbare manier om jou toepassings na die AWS-wolke te implementeer, sonder om oor die onderliggende infrastruktuur bekommerd te wees. Dit hanteer outomaties die besonderhede van kapasiteit voorsiening, las balansering, skaal, en toepassingsgesondheid monitering, sodat jy kan fokus op die skryf en implementering van jou kode.

Die infrastruktuur wat deur Elastic Beanstalk geskep word, word bestuur deur Outoskalering Groepe in EC2 (met 'n lasbalansier). Dit beteken dat as jy aan die einde van die dag die gasheer kompromitteer, moet jy weet van EC2:

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

Verder, as Docker gebruik word, is dit moontlik om ECS te gebruik.

pageAWS - EKS Enum

Toepassing & Omgewings

In AWS Elastic Beanstalk dien die konsepte van 'n "toepassing" en 'n "omgewing" verskillende doeleindes en het onderskeie rolle in die implementeringsproses.

Toepassing

  • 'n Toepassing in Elastic Beanstalk is 'n logiese houer vir jou toepassing se bronkode, omgewings, en konfigurasies. Dit groepeer verskillende weergawes van jou toepassingskode saam en stel jou in staat om hulle as 'n enkele entiteit te bestuur.

  • Wanneer jy 'n toepassing skep, voorsien jy 'n naam en beskrywing, maar geen hulpbronne word op hierdie stadium voorsien nie. Dit is eenvoudig 'n manier om jou kode en verwante hulpbronne te organiseer en bestuur.

  • Jy kan meervoudige toepassingsweergawes binne 'n toepassing hê. Elke weergawe stem ooreen met 'n spesifieke vrystelling van jou kode, wat na een of meer omgewings geïmplementeer kan word.

Omgewing

  • 'n Omgewing is 'n voorsiene instansie van jou toepassing wat op AWS-infrastruktuur loop. Dit is waar jou toepassingskode geïmplementeer en uitgevoer word. Elastic Beanstalk voorsien die nodige hulpbronne (bv. EC2-instansies, lasbalansiers, outoskaleringgroepe, databasisse) gebaseer op die omgewingskonfigurasie.

  • Elke omgewing loop 'n enkele weergawe van jou toepassing, en jy kan meerdere omgewings hê vir verskillende doeleindes, soos ontwikkeling, toetsing, stellings, en produksie.

  • Wanneer jy 'n omgewing skep, kies jy 'n platform (bv. Java, .NET, Node.js, ens.) en 'n omgewingstipe (bv. webbediener of werker). Jy kan ook die omgewingskonfigurasie aanpas om verskeie aspekte van die infrastruktuur en toepassingsinstellings te beheer.

2 tipes Omgewings

  1. Webbedieneromgewing: Dit is ontwerp om webtoepassings en API's te huisves en te dien. Hierdie toepassings hanteer tipies inkomende HTTP/HTTPS-versoeke. Die webbedieneromgewing voorsien hulpbronne soos EC2-instansies, lasbalansiers, en outoskaleringgroepe om inkomende verkeer te hanteer, kapasiteit te bestuur, en die hoë beskikbaarheid van die toepassing te verseker.

  2. Werkeromgewing: Dit is ontwerp om agtergrondtake te verwerk, wat dikwels tydrowende of hulpbron-intensiewe operasies is wat nie onmiddellike reaksies aan kliënte vereis nie. Die werkeromgewing voorsien hulpbronne soos EC2-instansies en outoskaleringgroepe, maar dit het nie 'n lasbalansier nie omdat dit nie HTTP/HTTPS-versoeke direk hanteer nie. In plaas daarvan verbruik dit take van 'n Amazon Simple Queue Service (SQS) waglys, wat as 'n buffer optree tussen die werkeromgewing en die take wat dit verwerk.

Sekuriteit

Wanneer jy 'n Toepassing in Beanstalk skep, is daar 3 baie belangrike sekuriteitsopties om te kies:

  • EC2 sleutelpaar: Dit sal die SSH-sleutel wees wat toegang sal hê tot die EC2-instansies wat die toepassing hardloop

  • IAM-instansieprofiel: Dit is die instansieprofiel wat die instansies sal hê (IAM-privileges)

  • Die outomaties gegenereerde rol word aws-elasticbeanstalk-ec2-role genoem en het 'n paar interessante toegang oor al die ECS, al die SQS, DynamoDB elasticbeanstalk en elasticbeanstalk S3 deur die AWS-bestuurde beleide: AWSElasticBeanstalkWebTier, AWSElasticBeanstalkMulticontainerDocker, AWSElasticBeanstalkWorkerTier.

  • Diensrol: Dit is die rol wat die AWS-diens sal gebruik om al die nodige aksies uit te voer. Vir sover ek weet, kan 'n gewone AWS-gebruiker nie daardie rol bereik nie.

  • Hierdie rol wat deur AWS gegenereer word, word aws-elasticbeanstalk-service-role genoem en gebruik die AWS-bestuurde beleide AWSElasticBeanstalkEnhancedHealth en AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy

Standaard is metadataversie 1 gedeaktiveer:

### Blootstelling

Beanstalk-data word gestoor in 'n S3-emmer met die volgende naam: elasticbeanstalk-<region>-<acc-id> (as dit geskep is in die AWS-konsole). Binne hierdie emmer sal jy die opgelaaide bronkode van die aansoek vind.

Die URL van die geskepte webbladsy is http://<webapp-name>-env.<random>.<region>.elasticbeanstalk.com/

As jy leestoegang oor die emmer kry, kan jy die bronkode lees en selfs sensitiewe geloofsbriewe daarop vind.

As jy skryftoegang oor die emmer kry, kan jy die bronkode wysig om die IAM-rol wat die aansoek volgende keer gebruik, te kompromitteer.

Enumerasie

# 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

Ongeverifieerde Toegang

pageAWS - Elastic Beanstalk Unauthenticated Enum

Volharding

pageAWS - Elastic Beanstalk Persistence

Privesc

pageAWS - Elastic Beanstalk Privesc

Na Exploitatie

pageAWS - Elastic Beanstalk Post Exploitation
Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Last updated