AWS - Elastic Beanstalk Enum

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

HackTricks'ı desteklemenin diğer yolları:

Elastic Beanstalk

Amazon Elastic Beanstalk, web uygulamalarını ve hizmetlerini dağıtmak, yönetmek ve ölçeklendirmek için basitleştirilmiş bir platform sağlar. Java, .NET, PHP, Node.js, Python, Ruby ve Go gibi çeşitli programlama dilleri ve çerçeveleri, Docker konteynerleri de dahil olmak üzere desteklenir. Servis, Apache, Nginx, Passenger ve IIS gibi yaygın olarak kullanılan sunucularla uyumludur.

Elastic Beanstalk, uygulamalarınızı AWS bulutuna dağıtmanın, altta yatan altyapıyla ilgilenme ihtiyacı olmadan basit ve esnek bir yol sağlar. Kapasite hazırlama, yük dengeleme, ölçeklendirme ve uygulama sağlık izleme gibi ayrıntıları otomatik olarak yönetir ve kod yazmaya ve dağıtmaya odaklanmanızı sağlar.

Elastic Beanstalk tarafından oluşturulan altyapı, EC2'deki Otomatik Ölçeklendirme Grupları tarafından yönetilir (bir yük dengeleyici ile). Bu da demektir ki, gün sonunda, ana bilgisayarı ele geçirirseniz, EC2 hakkında bilgi sahibi olmanız gerekmektedir:

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

Ayrıca, Docker kullanılıyorsa, ECS kullanılabilir.

AWS - EKS Enum

Uygulama ve Ortamlar

AWS Elastic Beanstalk'te, "uygulama" ve "ortam" kavramları, dağıtım sürecinde farklı amaçlar için farklı rolleri olan farklı amaçlar için hizmet verir.

Uygulama

  • Elastic Beanstalk'teki bir uygulama, uygulama kodunuzun kaynak kodu, ortamları ve yapılandırmaları için mantıksal bir konteynerdir. Farklı uygulama sürümlerini bir araya getirir ve bunları tek bir varlık olarak yönetmenizi sağlar.

  • Bir uygulama oluşturduğunuzda, bir ad ve açıklama sağlarsınız, ancak bu aşamada hiçbir kaynak sağlanmaz. Sadece kodunuzu ve ilgili kaynakları düzenlemek ve yönetmek için bir yol sağlar.

  • Bir uygulama içinde birden çok uygulama sürümü olabilir. Her sürüm, kodunuzun belirli bir sürümünü temsil eder ve bir veya daha fazla ortama dağıtılabilir.

Ortam

  • Bir ortam, AWS altyapısında çalışan uygulamanızın hazır bir örneğidir. Uygulama kodunuzun dağıtıldığı ve yürütüldüğü yerdir. Elastic Beanstalk, ortam yapılandırmasına dayanarak gerekli kaynakları (örneğin, EC2 örnekleri, yük dengeleyiciler, otomatik ölçeklendirme grupları, veritabanları) sağlar.

  • Her ortam, uygulamanızın tek bir sürümünü çalıştırır ve geliştirme, test, aşama ve üretim gibi farklı amaçlar için birden çok ortama sahip olabilirsiniz.

  • Bir ortam oluşturduğunuzda, bir platform (örneğin, Java, .NET, Node.js vb.) ve bir ortam türü (örneğin, web sunucusu veya işçi) seçersiniz. Ayrıca, altyapı ve uygulama ayarlarının çeşitli yönlerini kontrol etmek için ortam yapılandırmasını özelleştirebilirsiniz.

2 tür Ortam

  1. Web Sunucusu Ortamı: Web uygulamalarını ve API'leri barındırmak ve sunmak için tasarlanmıştır. Bu uygulamalar genellikle gelen HTTP/HTTPS isteklerini işler. Web sunucusu ortamı, gelen trafiği yönetmek, kapasiteyi yönetmek ve uygulamanın yüksek kullanılabilirliğini sağlamak için EC2 örnekleri, yük dengeleyicileri ve otomatik ölçeklendirme grupları gibi kaynakları sağlar.

  2. İşçi Ortamı: İşçi ortamı, genellikle müşterilere hemen yanıt gerektirmeyen, zaman alıcı veya kaynak yoğun işlemleri işlemek için tasarlanmıştır. İşçi ortamı, EC2 örnekleri ve otomatik ölçeklendirme grupları gibi kaynakları sağlar, ancak doğrudan HTTP/HTTPS isteklerini işlemediği için bir yük dengeleyiciye sahip değildir. Bunun yerine, işçi ortamı ile işlenen görevler arasında bir tampon görevi gören bir Amazon Simple Queue Service (SQS) kuyruğundan görevleri tüketir.

Güvenlik

Beanstalk'te bir Uygulama oluştururken seçilebilecek 3 çok önemli güvenlik seçeneği vardır:

  • EC2 anahtar çifti: Uygulamayı çalıştıran EC2 örneklerine erişebilecek olan SSH anahtar olacaktır.

  • IAM örneği profili: Örneklerin sahip olacağı örnek profili (IAM yetkileri)

  • Otomatik olarak oluşturulan rol aws-elasticbeanstalk-ec2-role adını taşır ve AWS yönetilen politikalarını kullanarak tüm ECS, tüm SQS, DynamoDB elasticbeanstalk ve elasticbeanstalk S3 üzerinde ilginç erişim sağlar: AWSElasticBeanstalkWebTier, AWSElasticBeanstalkMulticontainerDocker, AWSElasticBeanstalkWorkerTier.

  • Hizmet rolü: AWS hizmetinin gereken tüm işlemleri gerçekleştirmek için kullanacağı rol. Bildiğim kadarıyla, düzenli bir AWS kullanıcısı bu role erişemez.

  • AWS tarafından oluşturulan bu rol aws-elasticbeanstalk-service-role adını taşır ve AWS yönetilen politikalar AWSElasticBeanstalkEnhancedHealth ve AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy kullanır.

  • Vars

Maruz Kalma

Beanstalk verileri, aşağıdaki isme sahip bir S3 kovasında depolanır: elasticbeanstalk-<bölge>-<hesap-id> (AWS konsolunda oluşturulduysa). Bu kovada, yüklenen uygulamanın kaynak kodunu bulacaksınız.

Oluşturulan web sayfasının URL'si şu şekildedir: http://<webapp-adı>-env.<rastgele>.<bölge>.elasticbeanstalk.com/

Eğer kovaya okuma erişimi elde ederseniz, kaynak kodunu okuyabilir ve hatta üzerinde hassas kimlik bilgileri bulabilirsiniz.

Eğer kovaya yazma erişimi elde ederseniz, kaynak kodunu değiştirerek uygulamanın bir sonraki çalıştırılmasında kullanılan IAM rolünü tehlikeye atabilirsiniz.

Numaralandırma

# 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

Kimlik Doğrulama Gerektirmeyen Erişim

AWS - Elastic Beanstalk Unauthenticated Enum

Kalıcılık

AWS - Elastic Beanstalk Persistence

İzin Yükseltme

AWS - Elastic Beanstalk Privesc

Saldırı Sonrası

AWS - Elastic Beanstalk Post Exploitation
htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

HackTricks'ı desteklemenin diğer yolları:

Last updated