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:

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

应用程序与环境

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

应用程序

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

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

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

环境

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

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

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

2 种环境类型

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

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

安全

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

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

暴露

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

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

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

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

枚举

# 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

未经身份验证的访问

持久性

权限提升

利用后

支持 HackTricks

Last updated