AWS - Elastic Beanstalk Enum
Elastic Beanstalk
Amazon Elastic Beanstalkは、Webアプリケーションとサービスをデプロイ、管理、スケーリングするための簡素化されたプラットフォームを提供します。Java、.NET、PHP、Node.js、Python、Ruby、およびDockerコンテナなど、さまざまなプログラミング言語とフレームワークをサポートしています。このサービスは、Apache、Nginx、Passenger、IISなどの広く使用されているサーバーと互換性があります。
Elastic Beanstalkは、AWSクラウドにアプリケーションをデプロイするための簡単で柔軟な方法を提供します。これにより、基盤となるインフラストラクチャを気にする必要がなくなります。自動的に容量のプロビジョニング、負荷のバランシング、スケーリング、およびアプリケーションのヘルスモニタリングの詳細を処理し、コードの記述とデプロイに集中できます。
Elastic Beanstalkによって作成されたインフラストラクチャは、EC2(ロードバランサーを備えた)のAutoscalingグループによって管理されます。つまり、最終的には、ホストを侵害する場合、EC2について知っておく必要があります。
pageAWS - EC2, EBS, ELB, SSM, VPC & VPN Enumさらに、Dockerを使用している場合、ECSを使用できます。
pageAWS - EKS Enumアプリケーションと環境
AWS Elastic Beanstalkでは、「アプリケーション」と「環境」という概念が異なる目的で役割を果たし、展開プロセスで異なる役割を果たします。
アプリケーション
Elastic Beanstalkのアプリケーションは、アプリケーションのソースコード、環境、および構成の論理的なコンテナです。異なるバージョンのアプリケーションコードをグループ化し、それらを単一のエンティティとして管理できます。
アプリケーションを作成すると、名前と説明を提供しますが、この段階ではリソースはプロビジョニングされません。これは、コードと関連リソースを整理して管理する方法です。
アプリケーション内には複数のアプリケーションバージョンを持つことができます。各バージョンは、コードの特定のリリースに対応し、1つ以上の環境にデプロイできます。
環境
環境は、AWSインフラストラクチャで実行されているアプリケーションのプロビジョニングされたインスタンスです。ここで、アプリケーションコードがデプロイおよび実行されます。Elastic Beanstalkは、環境構成に基づいて必要なリソース(例:EC2インスタンス、ロードバランサー、オートスケーリンググループ、データベース)をプロビジョニングします。
各環境はアプリケーションの単一バージョンを実行し、開発、テスト、ステージング、本番など、さまざまな目的のために複数の環境を持つことができます。
環境を作成するときには、プラットフォーム(Java、.NET、Node.jsなど)と環境タイプ(Webサーバーまたはワーカーなど)を選択します。また、インフラストラクチャとアプリケーション設定のさまざまな側面を制御するために環境構成をカスタマイズすることもできます。
2種類の環境
Webサーバー環境:WebアプリケーションとAPIをホストおよび提供するために設計されています。これらのアプリケーションは通常、着信HTTP/HTTPSリクエストを処理します。Webサーバー環境は、着信トラフィックを処理し、容量を管理し、アプリケーションの高可用性を確保するためにEC2インスタンス、ロードバランサー、オートスケーリンググループなどのリソースをプロビジョニングします。
ワーカー環境:バックグラウンドタスクを処理するために設計されており、これらのタスクは通常、クライアントへの即時応答を必要としない時間のかかるまたはリソースを消費する操作です。ワーカー環境は、EC2インスタンスとオートスケーリンググループなどのリソースをプロビジョニングしますが、直接HTTP/HTTPSリクエストを処理しないため、ロードバランサーはありません。代わりに、ワーカー環境と処理するタスクの間にバッファとして機能するAmazon Simple Queue Service (SQS)キューからタスクを消費します。
セキュリティ
Beanstalkでアプリを作成する際に選択する3つの非常に重要なセキュリティオプション:
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は無効になっています:
### 曝露
Beanstalkのデータは、次の名前のS3バケットに格納されています: elasticbeanstalk-<region>-<acc-id>
(AWSコンソールで作成された場合)。このバケットの中には、アップロードされたアプリケーションのソースコードが含まれています。
作成されたウェブページのURLは、**http://<webapp-name>-env.<random>.<region>.elasticbeanstalk.com/
**です。
バケットに読み取りアクセス権限があると、ソースコードを読み取ることができ、機密情報の資格情報を見つけることさえできます。
バケットに書き込みアクセス権限があると、ソースコードを変更して、次回実行される際にアプリケーションが使用しているIAMロールを危険にさらすことができます。
列挙
認証されていないアクセス
pageAWS - Elastic Beanstalk Unauthenticated Enum永続性
pageAWS - Elastic Beanstalk Persistence特権昇格
pageAWS - Elastic Beanstalk Privesc攻撃後の活動
pageAWS - Elastic Beanstalk Post Exploitation最終更新