AWS - Elastic Beanstalk Enum

Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

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 Enum

Darüber hinaus, wenn Docker verwendet wird, ist es möglich, ECS zu verwenden.

pageAWS - EKS Enum

Anwendung & 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

  1. 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.

  2. 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

# 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

Nicht authentifizierter Zugriff

pageAWS - Elastic Beanstalk Unauthenticated Enum

Persistenz

pageAWS - Elastic Beanstalk Persistence

Privilege Escalation

pageAWS - Elastic Beanstalk Privesc

Post-Exploitation

pageAWS - Elastic Beanstalk Post Exploitation
Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Last updated