AWS - Elastic Beanstalk Enum
Elastic Beanstalk
Amazon Elastic Beanstalk bietet eine vereinfachte Plattform zum Bereitstellen, Verwalten und Skalieren von Webanwendungen und -diensten. Es unterstützt eine Vielzahl von Programmiersprachen und Frameworks wie Java, .NET, PHP, Node.js, Python, Ruby und Go sowie Docker-Container. Der Dienst ist kompatibel mit weit verbreiteten Servern wie Apache, Nginx, Passenger und IIS.
Elastic Beanstalk bietet eine einfache und flexible Möglichkeit, Ihre Anwendungen in die AWS-Cloud zu deployen, ohne sich um die zugrunde liegende Infrastruktur kümmern zu müssen. Es handhabt automatisch Details wie Kapazitäts-Bereitstellung, Lastenausgleich, Skalierung und Überwachung der Anwendungsgesundheit, sodass Sie sich auf das Schreiben und Bereitstellen Ihres Codes konzentrieren können.
Die von Elastic Beanstalk erstellte Infrastruktur wird von Autoscaling-Gruppen in EC2 (mit einem Lastenausgleicher) verwaltet. Das bedeutet, dass Sie am Ende des Tages, wenn Sie den Host kompromittieren, über EC2 Bescheid wissen sollten:
pageAWS - EC2, EBS, ELB, SSM, VPC & VPN EnumDarüber hinaus, wenn Docker verwendet wird, ist es möglich, ECS zu verwenden.
pageAWS - EKS EnumAnwendung & Umgebungen
In AWS Elastic Beanstalk dienen die Konzepte einer "Anwendung" und einer "Umgebung" unterschiedlichen Zwecken und haben unterschiedliche Rollen im Bereitstellungsprozess.
Anwendung
Eine Anwendung in Elastic Beanstalk ist ein logischer Container für den Quellcode Ihrer Anwendung, Umgebungen und Konfigurationen. Sie gruppiert verschiedene Versionen Ihres Anwendungscode und ermöglicht es Ihnen, sie als eine einzelne Entität zu verwalten.
Wenn Sie eine Anwendung erstellen, geben Sie einen Namen und eine Beschreibung an, aber es werden keine Ressourcen bereitgestellt. Es handelt sich lediglich um eine Möglichkeit, Ihren Code und die zugehörigen Ressourcen zu organisieren und zu verwalten.
Sie können mehrere Anwendungsversionen innerhalb einer Anwendung haben. Jede Version entspricht einem bestimmten Release Ihres Codes, der in einer oder mehreren Umgebungen bereitgestellt werden kann.
Umgebung
Eine Umgebung ist eine bereitgestellte Instanz Ihrer Anwendung, die auf der AWS-Infrastruktur läuft. Hier wird Ihr Anwendungscode bereitgestellt und ausgeführt. Elastic Beanstalk stellt die erforderlichen Ressourcen (z. B. EC2-Instanzen, Lastenausgleicher, Auto-Scaling-Gruppen, Datenbanken) basierend auf der Umgebungskonfiguration bereit.
Jede Umgebung führt eine einzige Version Ihrer Anwendung aus, und Sie können mehrere Umgebungen für verschiedene Zwecke haben, wie Entwicklung, Test, Staging und Produktion.
Beim Erstellen einer Umgebung wählen Sie eine Plattform (z. B. Java, .NET, Node.js usw.) und einen Umgebungstyp (z. B. Webserver oder Worker). Sie können auch die Umgebungskonfiguration anpassen, um verschiedene Aspekte der Infrastruktur und Anwendungseinstellungen zu steuern.
2 Arten von Umgebungen
Webserver-Umgebung: Sie ist darauf ausgelegt, Webanwendungen und APIs zu hosten und bereitzustellen. Diese Anwendungen verarbeiten in der Regel eingehende HTTP/HTTPS-Anfragen. Die Webserver-Umgebung stellt Ressourcen wie EC2-Instanzen, Lastenausgleicher und Auto-Scaling-Gruppen bereit, um den eingehenden Datenverkehr zu handhaben, die Kapazität zu verwalten und die hohe Verfügbarkeit der Anwendung sicherzustellen.
Worker-Umgebung: Sie ist darauf ausgelegt, Hintergrundaufgaben zu verarbeiten, die oft zeitaufwändige oder ressourcenintensive Operationen sind, die keine sofortigen Antworten an Clients erfordern. Die Worker-Umgebung stellt Ressourcen wie EC2-Instanzen und Auto-Scaling-Gruppen bereit, hat jedoch keinen Lastenausgleicher, da sie keine HTTP/HTTPS-Anfragen direkt verarbeitet. Stattdessen verbraucht sie Aufgaben aus einer Amazon Simple Queue Service (SQS)-Warteschlange, die als Puffer zwischen der Worker-Umgebung und den von ihr verarbeiteten Aufgaben fungiert.
Sicherheit
Beim Erstellen einer App in Beanstalk gibt es 3 sehr wichtige Sicherheitsoptionen zur Auswahl:
EC2-Schlüsselpaar: Dies ist der SSH-Schlüssel, mit dem auf die EC2-Instanzen zugegriffen werden kann, auf denen die App läuft.
IAM-Instanzprofil: Dies ist das Instanzprofil, das die Instanzen haben werden (IAM-Berechtigungen).
Die automatisch generierte Rolle heißt
aws-elasticbeanstalk-ec2-role
und hat einige interessante Zugriffe auf alle ECS, alle SQS, DynamoDB Elastic Beanstalk und Elastic Beanstalk S3 unter Verwendung der AWS-Managed-Richtlinien: AWSElasticBeanstalkWebTier, AWSElasticBeanstalkMulticontainerDocker, AWSElasticBeanstalkWorkerTier.Service-Rolle: Dies ist die Rolle, die der AWS-Dienst verwenden wird, um alle erforderlichen Aktionen auszuführen. Soweit ich weiß, kann ein regulärer AWS-Benutzer nicht auf diese Rolle zugreifen.
Diese von AWS generierte Rolle heißt
aws-elasticbeanstalk-service-role
und verwendet die AWS-Managed-Richtlinien AWSElasticBeanstalkEnhancedHealth und AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy
Standardmäßig ist Metadaten-Version 1 deaktiviert:
### Exposition
Die Beanstalk-Daten werden in einem S3-Bucket mit dem folgenden Namen gespeichert: elasticbeanstalk-<region>-<acc-id>
(wenn es in der AWS-Konsole erstellt wurde). In diesem Bucket finden Sie den hochgeladenen Quellcode der Anwendung.
Die URL der erstellten Webseite lautet http://<webapp-name>-env.<random>.<region>.elasticbeanstalk.com/
Wenn Sie Lesezugriff auf den Bucket erhalten, können Sie den Quellcode lesen und sogar sensible Anmeldeinformationen darin finden.
Wenn Sie Schreibzugriff auf den Bucket erhalten, könnten Sie den Quellcode ändern, um die IAM-Rolle zu kompromittieren, die die Anwendung beim nächsten Ausführen verwendet.
Aufzählung
Nicht authentifizierter Zugriff
pageAWS - Elastic Beanstalk Unauthenticated EnumPersistenz
pageAWS - Elastic Beanstalk PersistencePrivilege Escalation
pageAWS - Elastic Beanstalk PrivescPost-Exploitation
pageAWS - Elastic Beanstalk Post ExploitationLast updated