AWS - Elastic Beanstalk Enum
Last updated
Last updated
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)
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 EnumPored toga, ako se koristi Docker, moguće je koristiti ECS.
AWS - EKS EnumU AWS Elastic Beanstalk, koncepti "aplikacije" i "okruženja" služe različitim svrhama i imaju različite uloge u procesu implementacije.
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 resursi se ne provisioniraju u ovoj fazi. 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 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 kako biste kontrolisali različite aspekte infrastrukture i postavki aplikacije.
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.
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 kao što su EC2 instance i auto-scaling grupe, 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.
Kada kreirate aplikaciju u Beanstalk-u, postoje 3 veoma važna bezbednosna opcija za izbor:
EC2 ključni par: Ovo će biti SSH ključ koji će moći da pristupi EC2 instancama koje pokreću aplikaciju.
IAM profil instance: Ovo je profil instance koji će instance imati (IAM privilegije).
Autogenerisana uloga se zove aws-elasticbeanstalk-ec2-role
i ima zanimljiv pristup svim ECS, svim SQS, DynamoDB elasticbeanstalk i elasticbeanstalk S3 koristeći AWS upravljane politike: AWSElasticBeanstalkWebTier, AWSElasticBeanstalkMulticontainerDocker, AWSElasticBeanstalkWorkerTier.
Uloga servisa: Ovo je uloga koju će AWS servis koristiti za izvršavanje svih potrebnih akcija. Koliko znam, običan AWS korisnik ne može pristupiti toj ulozi.
Ova uloga generisana od strane AWS-a se zove aws-elasticbeanstalk-service-role
i koristi AWS upravljane politike AWSElasticBeanstalkEnhancedHealth i AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy
Podrazumevano je metadata verzija 1 onemogućena:
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 učitani izvorni kod aplikacije.
URL kreirane web stranice je http://<webapp-name>-env.<random>.<region>.elasticbeanstalk.com/
Ako dobijete pristup za čitanje preko bucket-a, možete pročitati izvorni kod i čak pronaći osetljive akreditive u njemu.
Ako dobijete pristup za pisanje preko bucket-a, mogli biste modifikovati izvorni kod da kompromitujete IAM ulogu koju aplikacija koristi sledeći put kada se izvrši.
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)