AWS - Elastic Beanstalk Enum
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Elastic Beanstalk
Η Amazon Elastic Beanstalk παρέχει μια απλοποιημένη πλατφόρμα για την ανάπτυξη, διαχείριση και κλιμάκωση διαδικτυακών εφαρμογών και υπηρεσιών. Υποστηρίζει μια ποικιλία γλωσσών προγραμματισμού και πλαισίων, όπως Java, .NET, PHP, Node.js, Python, Ruby και Go, καθώς και κοντέινερ Docker. Η υπηρεσία είναι συμβατή με ευρέως χρησιμοποιούμενους διακομιστές, συμπεριλαμβανομένων των Apache, Nginx, Passenger και IIS.
Η Elastic Beanstalk παρέχει έναν απλό και ευέλικτο τρόπο για να αναπτύξετε τις εφαρμογές σας στο AWS cloud, χωρίς να χρειάζεται να ανησυχείτε για την υποκείμενη υποδομή. Αυτόματα διαχειρίζεται τις λεπτομέρειες της παροχής χωρητικότητας, της εξισορρόπησης φορτίου, της κλιμάκωσης και της παρακολούθησης της υγείας της εφαρμογής, επιτρέποντάς σας να εστιάσετε στη συγγραφή και ανάπτυξη του κώδικά σας.
Η υποδομή που δημιουργείται από την Elastic Beanstalk διαχειρίζεται από Autoscaling Groups σε EC2 (με έναν εξισορροπητή φορτίου). Αυτό σημαίνει ότι στο τέλος της ημέρας, αν παραβιάσετε τον διακομιστή, θα πρέπει να γνωρίζετε για το EC2:
AWS - EC2, EBS, ELB, SSM, VPC & VPN Enum
Επιπλέον, αν χρησιμοποιείται Docker, είναι δυνατή η χρήση του ECS.
Εφαρμογή & Περιβάλλοντα
Στην AWS Elastic Beanstalk, οι έννοιες της “εφαρμογής” και του “περιβάλλοντος” εξυπηρετούν διαφορετικούς σκοπούς και έχουν διακριτούς ρόλους στη διαδικασία ανάπτυξης.
Εφαρμογή
- Μια εφαρμογή στην Elastic Beanstalk είναι ένα λογικό δοχείο για τον πηγαίο κώδικα της εφαρμογής σας, τα περιβάλλοντα και τις ρυθμίσεις. Ομαδοποιεί διαφορετικές εκδόσεις του κώδικα της εφαρμογής σας και σας επιτρέπει να τις διαχειρίζεστε ως μία οντότητα.
- Όταν δημιουργείτε μια εφαρμογή, παρέχετε ένα όνομα και περιγραφή, αλλά δεν παρέχονται πόροι σε αυτό το στάδιο. Είναι απλώς ένας τρόπος οργάνωσης και διαχείρισης του κώδικα και των σχετικών πόρων σας.
- Μπορείτε να έχετε πολλές εκδόσεις εφαρμογής μέσα σε μια εφαρμογή. Κάθε έκδοση αντιστοιχεί σε μια συγκεκριμένη έκδοση του κώδικά σας, η οποία μπορεί να αναπτυχθεί σε ένα ή περισσότερα περιβάλλοντα.
Περιβάλλον
- Ένα περιβάλλον είναι μια παρεχόμενη παρουσία της εφαρμογής σας που εκτελείται στην υποδομή AWS. Είναι όπου αναπτύσσεται και εκτελείται ο κώδικας της εφαρμογής σας. Η Elastic Beanstalk παρέχει τους απαραίτητους πόρους (π.χ., EC2 instances, load balancers, auto-scaling groups, βάσεις δεδομένων) με βάση τη ρύθμιση του περιβάλλοντος.
- Κάθε περιβάλλον εκτελεί μια μόνο έκδοση της εφαρμογής σας, και μπορείτε να έχετε πολλά περιβάλλοντα για διαφορετικούς σκοπούς, όπως ανάπτυξη, δοκιμή, staging και παραγωγή.
- Όταν δημιουργείτε ένα περιβάλλον, επιλέγετε μια πλατφόρμα (π.χ., Java, .NET, Node.js, κ.λπ.) και έναν τύπο περιβάλλοντος (π.χ., web server ή worker). Μπορείτε επίσης να προσαρμόσετε τη ρύθμιση του περιβάλλοντος για να ελέγξετε διάφορες πτυχές της υποδομής και των ρυθμίσεων της εφαρμογής.
2 τύποι Περιβαλλόντων
- Web Server Environment: Είναι σχεδιασμένο να φιλοξενεί και να εξυπηρετεί διαδικτυακές εφαρμογές και APIs. Αυτές οι εφαρμογές συνήθως διαχειρίζονται εισερχόμενα HTTP/HTTPS αιτήματα. Το περιβάλλον web server παρέχει πόρους όπως EC2 instances, load balancers, και auto-scaling groups για να διαχειρίζεται την εισερχόμενη κίνηση, να διαχειρίζεται τη χωρητικότητα και να εξασφαλίζει την υψηλή διαθεσιμότητα της εφαρμογής.
- Worker Environment: Είναι σχεδιασμένο να επεξεργάζεται εργασίες φόντου, οι οποίες συχνά είναι χρονοβόρες ή απαιτητικές σε πόρους και δεν απαιτούν άμεσες απαντήσεις στους πελάτες. Το περιβάλλον worker παρέχει πόρους όπως EC2 instances και auto-scaling groups, αλλά δεν έχει εξισορροπητή φορτίου καθώς δεν διαχειρίζεται άμεσα HTTP/HTTPS αιτήματα. Αντίθετα, καταναλώνει εργασίες από μια Amazon Simple Queue Service (SQS) queue, η οποία λειτουργεί ως buffer μεταξύ του περιβάλλοντος worker και των εργασιών που επεξεργάζεται.
Ασφάλεια
Όταν δημιουργείτε μια εφαρμογή στο Beanstalk, υπάρχουν 3 πολύ σημαντικές επιλογές ασφάλειας για να επιλέξετε:
- EC2 key pair: Αυτό θα είναι το SSH key που θα μπορεί να έχει πρόσβαση στα EC2 instances που εκτελούν την εφαρμογή.
- IAM instance profile: Αυτό είναι το instance profile που θα έχουν τα instances (IAM privileges).
- Ο αυτοματοποιημένος ρόλος ονομάζεται
aws-elasticbeanstalk-ec2-roleκαι έχει κάποιες ενδιαφέρουσες προσβάσεις σε όλα τα ECS, όλα τα SQS, DynamoDB elasticbeanstalk και elasticbeanstalk S3 χρησιμοποιώντας τις διαχειριζόμενες πολιτικές AWS: AWSElasticBeanstalkWebTier, AWSElasticBeanstalkMulticontainerDocker, AWSElasticBeanstalkWorkerTier. - Service role: Αυτός είναι ο ρόλος που θα χρησιμοποιήσει η υπηρεσία AWS για να εκτελέσει όλες τις απαραίτητες ενέργειες. Όσο γνωρίζω, ένας κανονικός χρήστης AWS δεν μπορεί να έχει πρόσβαση σε αυτόν τον ρόλο.
- Αυτός ο ρόλος που δημιουργείται από την AWS ονομάζεται
aws-elasticbeanstalk-service-roleκαι χρησιμοποιεί τις διαχειριζόμενες πολιτικές AWS AWSElasticBeanstalkEnhancedHealth και AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy
Από προεπιλογή, η έκδοση μεταδεδομένων 1 είναι απενεργοποιημένη:
.png)
Έκθεση
Τα δεδομένα του Beanstalk αποθηκεύονται σε ένα S3 bucket με το εξής όνομα: elasticbeanstalk-<region>-<acc-id> (αν δημιουργήθηκε στην κονσόλα AWS). Μέσα σε αυτό το bucket θα βρείτε τον ανεβασμένο πηγαίο κώδικα της εφαρμογής.
Η διεύθυνση URL της δημιουργηθείσας ιστοσελίδας είναι http://<webapp-name>-env.<random>.<region>.elasticbeanstalk.com/
Warning
Αν αποκτήσετε πρόσβαση ανάγνωσης στο bucket, μπορείτε να διαβάσετε τον πηγαίο κώδικα και ακόμη και να βρείτε ευαίσθητα διαπιστευτήρια σε αυτόν.
Αν αποκτήσετε πρόσβαση εγγραφής στο bucket, θα μπορούσατε να τροποποιήσετε τον πηγαίο κώδικα για να παραβιάσετε τον ρόλο IAM που χρησιμοποιεί η εφαρμογή την επόμενη φορά που θα εκτελείται.
Αριθμητική
# 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
Μη Αυθεντικοποιημένη Πρόσβαση
AWS - Elastic Beanstalk Unauthenticated Enum
Επιμονή
AWS - Elastic Beanstalk Persistence
Ανάβαση Δικαιωμάτων
AWS - Elastic Beanstalk Privesc
Μετά την Εκμετάλλευση
AWS - Elastic Beanstalk Post Exploitation
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
HackTricks Cloud

