AWS - Elastic Beanstalk Enum
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 EnumApplication & Environments
在 AWS Elastic Beanstalk 中,“应用程序”和“环境”的概念在部署过程中具有不同的目的和角色。
Application
Elastic Beanstalk 中的应用程序是应用程序源代码、环境和配置的逻辑容器。它将应用程序代码的不同版本组合在一起,允许您将它们作为一个实体进行管理。
当您创建应用程序时,您提供一个名称和描述,但此阶段不会配置任何资源。它只是组织和管理代码及相关资源的一种方式。
您可以在一个应用程序中拥有多个应用程序版本。每个版本对应于代码的特定发布,可以部署到一个或多个环境中。
Environment
环境是在 AWS 基础设施上运行的应用程序的配置实例。它是应用程序代码部署和执行的地方。Elastic Beanstalk 根据环境配置配置所需的资源(例如,EC2 实例、负载均衡器、自动扩展组、数据库)。
每个环境运行应用程序的单个版本,您可以为不同目的(如开发、测试、预发布和生产)创建多个环境。
当您创建环境时,您选择一个平台(例如,Java、.NET、Node.js 等)和一个环境类型(例如,Web 服务器或工作者)。您还可以自定义环境配置,以控制基础设施和应用程序设置的各个方面。
2 types of Environments
Web Server Environment: 设计用于托管和服务 Web 应用程序和 API。这些应用程序通常处理传入的 HTTP/HTTPS 请求。Web 服务器环境配置资源,如 EC2 实例、负载均衡器和自动扩展组,以处理传入流量、管理容量并确保应用程序的高可用性。
Worker Environment: 设计用于处理后台任务,这些任务通常是耗时或资源密集型操作,不需要立即响应客户端。工作者环境配置资源,如 EC2 实例和自动扩展组,但没有负载均衡器,因为它不直接处理 HTTP/HTTPS 请求。相反,它从 Amazon Simple Queue Service (SQS) 队列中获取任务,该队列充当工作者环境和其处理任务之间的缓冲区。
Security
在 Beanstalk 中创建应用程序时,有三个非常重要的安全选项可供选择:
EC2 密钥对: 这将是能够访问运行应用程序的 EC2 实例的 SSH 密钥
IAM 实例配置文件: 这是实例将拥有的实例配置文件(IAM 权限)
自动生成的角色称为
aws-elasticbeanstalk-ec2-role
,并通过 AWS 管理的策略对所有 ECS、所有 SQS、DynamoDB elasticbeanstalk 和 elasticbeanstalk S3 具有一些有趣的访问权限:AWSElasticBeanstalkWebTier, AWSElasticBeanstalkMulticontainerDocker, AWSElasticBeanstalkWorkerTier.服务角色: 这是 AWS 服务将用于执行所有所需操作的角色。据我所知,常规 AWS 用户无法访问该角色。
由 AWS 生成的此角色称为
aws-elasticbeanstalk-service-role
,并使用 AWS 管理的策略 AWSElasticBeanstalkEnhancedHealth 和 AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy
默认情况下,元数据版本 1 被禁用:
Exposure
Beanstalk 数据存储在一个 S3 bucket 中,名称为:elasticbeanstalk-<region>-<acc-id>
(如果是在 AWS 控制台中创建的)。在这个 bucket 中,您会找到上传的应用程序源代码。
创建的网页的 URL 是 http://<webapp-name>-env.<random>.<region>.elasticbeanstalk.com/
如果您获得了 bucket 的读取访问权限,您可以读取源代码,甚至找到敏感凭证
如果您获得了 bucket 的写入访问权限,您可以修改源代码,以在下次执行时攻破应用程序使用的IAM 角色。
Enumeration
未经身份验证的访问
AWS - Elastic Beanstalk Unauthenticated Enum持久性
AWS - Elastic Beanstalk Persistence权限提升
AWS - Elastic Beanstalk Privesc后期利用
AWS - Elastic Beanstalk Post ExploitationLast updated