AWS - Elastic Beanstalk Enum
Last updated
Last updated
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)
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 destekler ve ayrıca Docker konteynerleri ile uyumludur. Hizmet, Apache, Nginx, Passenger ve IIS gibi yaygın olarak kullanılan sunucularla uyumludur.
Elastic Beanstalk, uygulamalarınızı AWS bulutuna dağıtmanın basit ve esnek bir yolunu sunar; altyapı hakkında endişelenmenize gerek kalmaz. Otomatik olarak kapasite sağlama, yük dengeleme, ölçeklendirme ve uygulama sağlık izleme detaylarını yönetir, böylece kodunuzu yazmaya ve dağıtmaya odaklanabilirsiniz.
Elastic Beanstalk tarafından oluşturulan altyapı, EC2'deki Otomatik Ölçekleme Grupları tarafından yönetilmektedir (bir yük dengeleyici ile). Yani, günün sonunda, eğer host'u tehlikeye atarsanız, EC2 hakkında bilgi sahibi olmalısınız:
AWS - EC2, EBS, ELB, SSM, VPC & VPN EnumAyrıca, Docker kullanılıyorsa, ECS kullanmak mümkündür.
AWS - EKS EnumAWS Elastic Beanstalk'ta, "uygulama" ve "ortam" kavramları farklı amaçlara hizmet eder ve dağıtım sürecinde belirgin rollere sahiptir.
Elastic Beanstalk'taki bir uygulama, uygulamanızın kaynak kodu, ortamları ve yapılandırmaları için mantıksal bir konteynerdir. Uygulama kodunuzun farklı sürümlerini bir araya getirir ve bunları tek bir varlık olarak yönetmenizi sağlar.
Bir uygulama oluşturduğunuzda, bir isim ve açıklama sağlarsınız, ancak bu aşamada hiçbir kaynak sağlanmaz. Bu, kodunuzu ve ilgili kaynakları organize etmenin ve yönetmenin bir yoludur.
Bir uygulama içinde birden fazla uygulama sürümüne sahip olabilirsiniz. Her sürüm, kodunuzun belirli bir sürümüne karşılık gelir ve bir veya daha fazla ortama dağıtılabilir.
Bir ortam, AWS altyapısında çalışan uygulamanızın sağlanmış bir örneğidir. Uygulama kodunuzun dağıtıldığı ve çalıştırıldığı yerdir. Elastic Beanstalk, ortam yapılandırmasına göre gerekli kaynakları (örneğin, EC2 örnekleri, yük dengeleyiciler, otomatik ölçekleme grupları, veritabanları) sağlar.
Her ortam, uygulamanızın tek bir sürümünü çalıştırır ve geliştirme, test, sahneleme ve üretim gibi farklı amaçlar için birden fazla ortamınız olabilir.
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ının ve uygulama ayarlarının çeşitli yönlerini kontrol etmek için ortam yapılandırmasını özelleştirebilirsiniz.
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 dengeleyiciler ve otomatik ölçekleme grupları gibi kaynakları sağlar.
İşçi Ortamı: Arka plan görevlerini işlemek için tasarlanmıştır; bu görevler genellikle zaman alıcı veya kaynak yoğun işlemlerdir ve müşterilere anında yanıt gerektirmez. İşçi ortamı, EC2 örnekleri ve otomatik ölçekleme 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ı, işlediği görevler ile işçi ortamı arasında bir tampon görevi gören Amazon Basit Kuyruk Servisi (SQS) kuyruğundan görevleri alır.
Beanstalk'ta bir Uygulama oluştururken seçilecek 3 çok önemli güvenlik seçeneği vardır:
EC2 anahtar çifti: Bu, uygulamayı çalıştıran EC2 örneklerine erişebilecek SSH anahtarı olacaktır.
IAM örnek profili: Bu, örneklerin sahip olacağı örnek profilidir (IAM ayrıcalıkları).
Otomatik olarak oluşturulan rol aws-elasticbeanstalk-ec2-role
olarak adlandırılır ve AWS yönetilen politikaları kullanarak tüm ECS, tüm SQS, DynamoDB elasticbeanstalk ve elasticbeanstalk S3 üzerinde bazı ilginç erişimlere sahiptir: AWSElasticBeanstalkWebTier, AWSElasticBeanstalkMulticontainerDocker, AWSElasticBeanstalkWorkerTier.
Hizmet rolü: Bu, AWS hizmetinin gerekli tüm eylemleri gerçekleştirmek için kullanacağı roldür. Bildiğim kadarıyla, normal bir AWS kullanıcısı bu role erişemez.
AWS tarafından oluşturulan bu rol aws-elasticbeanstalk-service-role
olarak adlandırılır ve AWS yönetilen politikaları AWSElasticBeanstalkEnhancedHealth ve AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy kullanır.
Varsayılan olarak metadata sürümü 1 devre dışı bırakılmıştır:
Beanstalk verileri, aşağıdaki isimle bir S3 kovasında saklanır: elasticbeanstalk-<region>-<acc-id>
(eğer AWS konsolunda oluşturulmuşsa). Bu kovada, yüklenen uygulama kaynak kodunu bulacaksınız.
Oluşturulan web sayfasının URL'si http://<webapp-name>-env.<random>.<region>.elasticbeanstalk.com/
Eğer kova üzerinde okuma erişimi elde ederseniz, kaynak kodunu okuyabilir ve hatta üzerinde hassas kimlik bilgileri bulabilirsiniz.
Eğer kova üzerinde yazma erişimi elde ederseniz, kaynak kodunu değiştirebilir ve uygulamanın bir sonraki çalıştırıldığında kullandığı IAM rolünü tehlikeye atabilirsiniz.
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)