AWS - Elastic Beanstalk Enum
Reading time: 10 minutes
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
Elastic Beanstalk
Amazon Elastic Beanstalkは、ウェブアプリケーションとサービスのデプロイ、管理、スケーリングのための簡素化されたプラットフォームを提供します。Java、.NET、PHP、Node.js、Python、Ruby、Goなどのさまざまなプログラミング言語とフレームワーク、Dockerコンテナをサポートしています。このサービスは、Apache、Nginx、Passenger、IISなどの広く使用されているサーバーと互換性があります。
Elastic Beanstalkは、AWSクラウドにアプリケーションをデプロイするためのシンプルで柔軟な方法を提供し、基盤となるインフラストラクチャについて心配する必要がありません。自動的にキャパシティのプロビジョニング、負荷バランシング、スケーリング、アプリケーションの健康モニタリングの詳細を処理し、コードの作成とデプロイに集中できるようにします。
Elastic Beanstalkによって作成されたインフラストラクチャは、EC2のオートスケーリンググループによって管理されます(負荷バランサー付き)。つまり、最終的には、ホストを侵害した場合、EC2について知っておくべきです:
AWS - EC2, EBS, ELB, SSM, VPC & VPN Enum
さらに、Dockerが使用されている場合、ECSを使用することも可能です。
アプリケーションと環境
AWS Elastic Beanstalkでは、「アプリケーション」と「環境」の概念は異なる目的を持ち、デプロイプロセスにおいて異なる役割を果たします。
アプリケーション
- Elastic Beanstalkのアプリケーションは、アプリケーションのソースコード、環境、および設定の論理コンテナです。異なるバージョンのアプリケーションコードをグループ化し、単一のエンティティとして管理できます。
- アプリケーションを作成する際には、名前と説明を提供しますが、この段階ではリソースはプロビジョニングされません。これは単にコードと関連リソースを整理し管理する方法です。
- アプリケーション内には複数のアプリケーションバージョンを持つことができます。各バージョンは、特定のリリースに対応し、1つ以上の環境にデプロイできます。
環境
- 環境は、AWSインフラストラクチャ上で実行されるアプリケーションのプロビジョニングされたインスタンスです。アプリケーションコードがデプロイされ、実行される場所です。Elastic Beanstalkは、環境設定に基づいて必要なリソース(例:EC2インスタンス、負荷バランサー、オートスケーリンググループ、データベース)をプロビジョニングします。
- 各環境はアプリケーションの単一バージョンを実行し、開発、テスト、ステージング、本番など、異なる目的のために複数の環境を持つことができます。
- 環境を作成する際には、プラットフォーム(例:Java、.NET、Node.jsなど)と環境タイプ(例:ウェブサーバーまたはワーカー)を選択します。また、インフラストラクチャやアプリケーション設定のさまざまな側面を制御するために、環境設定をカスタマイズすることもできます。
2種類の環境
- ウェブサーバー環境:ウェブアプリケーションとAPIをホストおよび提供するために設計されています。これらのアプリケーションは通常、受信HTTP/HTTPSリクエストを処理します。ウェブサーバー環境は、受信トラフィックを処理し、キャパシティを管理し、アプリケーションの高可用性を確保するために、EC2インスタンス、負荷バランサー、オートスケーリンググループなどのリソースをプロビジョニングします。
- ワーカー環境:バックグラウンドタスクを処理するために設計されています。これらは通常、時間がかかるかリソース集約的な操作であり、クライアントへの即時応答を必要としません。ワーカー環境は、EC2インスタンスやオートスケーリンググループなどのリソースをプロビジョニングしますが、HTTP/HTTPSリクエストを直接処理しないため、負荷バランサーはありません。代わりに、Amazon Simple Queue Service (SQS) キューからタスクを消費し、ワーカー環境と処理するタスクの間のバッファとして機能します。
セキュリティ
Beanstalkでアプリを作成する際には、選択すべき3つの非常に重要なセキュリティオプションがあります:
- EC2キーペア:これは、アプリを実行しているEC2インスタンスにアクセスできるSSHキーです。
- IAMインスタンスプロファイル:これは、インスタンスが持つインスタンスプロファイルです(IAM権限)。
- 自動生成されたロールは**
aws-elasticbeanstalk-ec2-role
**と呼ばれ、すべてのECS、すべてのSQS、DynamoDB elasticbeanstalkおよびelasticbeanstalk S3に対して興味深いアクセス権を持っています。AWS管理ポリシーを使用しています:AWSElasticBeanstalkWebTier、AWSElasticBeanstalkMulticontainerDocker、AWSElasticBeanstalkWorkerTier。 - サービスロール:これは、AWSサービスが必要なすべてのアクションを実行するために使用するロールです。私の知る限り、通常のAWSユーザーはそのロールにアクセスできません。
- AWSによって生成されたこのロールは**
aws-elasticbeanstalk-service-role
**と呼ばれ、AWS管理ポリシーAWSElasticBeanstalkEnhancedHealthおよびAWSElasticBeanstalkManagedUpdatesCustomerRolePolicyを使用しています。
デフォルトでは、メタデータバージョン1は無効です:
.png)
エクスポージャー
Beanstalkデータは、次の名前のS3バケットに保存されます:elasticbeanstalk-<region>-<acc-id>
(AWSコンソールで作成された場合)。このバケット内には、アップロードされたアプリケーションのソースコードが含まれています。
作成されたウェブページのURLは**http://<webapp-name>-env.<random>.<region>.elasticbeanstalk.com/
**です。
warning
バケットに読み取りアクセスがある場合、ソースコードを読み取ることができ、そこに機密資格情報を見つけることもできます。
バケットに書き込みアクセスがある場合、次回実行される際にアプリケーションが使用している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
認証されていないアクセス
AWS - Elastic Beanstalk Unauthenticated Enum
永続性
AWS - Elastic Beanstalk Persistence
権限昇格
AWS - Elastic Beanstalk Privesc
ポストエクスプロイト
AWS - Elastic Beanstalk Post Exploitation
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。