AWS - Elastic Beanstalk Enum

支持 HackTricks

Elastic Beanstalk

Amazon Elastic Beanstalk 提供了一个简化的平台,用于部署、管理和扩展 Web 应用程序和服务。它支持多种编程语言和框架,如 Java、.NET、PHP、Node.js、Python、Ruby 和 Go,以及 Docker 容器。该服务兼容广泛使用的服务器,包括 Apache、Nginx、Passenger 和 IIS。

Elastic Beanstalk 提供了一种简单而灵活的方式将应用程序部署到 AWS 云,无需担心底层基础设施。它自动处理容量配置、负载均衡扩展和应用程序健康监控的细节,让您专注于编写和部署代码。

Elastic Beanstalk 创建的基础设施由 EC2 中的 Autoscaling 组管理(带有负载均衡器)。这意味着最终,如果您攻破主机,您应该了解 EC2:

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

此外,如果使用 Docker,可以使用 ECS

AWS - EKS Enum

Application & Environments

在 AWS Elastic Beanstalk 中,“应用程序”和“环境”的概念在部署过程中具有不同的目的和角色。

Application

  • Elastic Beanstalk 中的应用程序是应用程序源代码、环境和配置的逻辑容器。它将应用程序代码的不同版本组合在一起,允许您将它们作为一个实体进行管理。

  • 当您创建应用程序时,您提供一个名称和描述,但此阶段不会配置任何资源。它只是组织和管理代码及相关资源的一种方式。

  • 您可以在一个应用程序中拥有多个应用程序版本。每个版本对应于代码的特定发布,可以部署到一个或多个环境中。

Environment

  • 环境是在 AWS 基础设施上运行的应用程序的配置实例。它是应用程序代码部署和执行的地方。Elastic Beanstalk 根据环境配置配置所需的资源(例如,EC2 实例、负载均衡器、自动扩展组、数据库)。

  • 每个环境运行应用程序的单个版本,您可以为不同目的(如开发、测试、预发布和生产)创建多个环境。

  • 当您创建环境时,您选择一个平台(例如,Java、.NET、Node.js 等)和一个环境类型(例如,Web 服务器或工作者)。您还可以自定义环境配置,以控制基础设施和应用程序设置的各个方面。

2 types of Environments

  1. Web Server Environment: 设计用于托管和服务 Web 应用程序和 API。这些应用程序通常处理传入的 HTTP/HTTPS 请求。Web 服务器环境配置资源,如 EC2 实例、负载均衡器和自动扩展组,以处理传入流量、管理容量并确保应用程序的高可用性。

  2. Worker Environment: 设计用于处理后台任务,这些任务通常是耗时或资源密集型操作,不需要立即响应客户端。工作者环境配置资源,如 EC2 实例和自动扩展组,但没有负载均衡器,因为它不直接处理 HTTP/HTTPS 请求。相反,它从 Amazon Simple Queue Service (SQS) 队列中获取任务,该队列充当工作者环境和其处理任务之间的缓冲区。

Security

在 Beanstalk 中创建应用程序时,有三个非常重要的安全选项可供选择:

默认情况下,元数据版本 1 被禁用

Exposure

Beanstalk 数据存储在一个 S3 bucket 中,名称为:elasticbeanstalk-<region>-<acc-id>(如果是在 AWS 控制台中创建的)。在这个 bucket 中,您会找到上传的应用程序源代码

创建的网页的 URLhttp://<webapp-name>-env.<random>.<region>.elasticbeanstalk.com/

如果您获得了 bucket 的读取访问权限,您可以读取源代码,甚至找到敏感凭证

如果您获得了 bucket 的写入访问权限,您可以修改源代码,以在下次执行时攻破应用程序使用的IAM 角色

Enumeration

# 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

未经身份验证的访问

AWS - Elastic Beanstalk Unauthenticated Enum

持久性

AWS - Elastic Beanstalk Persistence

权限提升

AWS - Elastic Beanstalk Privesc

后期利用

AWS - Elastic Beanstalk Post Exploitation
支持 HackTricks

Last updated