mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-30 14:40:37 -08:00
Translated ['src/pentesting-cloud/aws-security/aws-unauthenticated-enum-
This commit is contained in:
@@ -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 バケットの発見
|
||||
|
||||
@@ -25,8 +25,9 @@ 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を持っている可能性があります。
|
||||
- **[s3dns](https://github.com/olizimmermann/s3dns)** – DNSトラフィックを分析することでクラウドストレージバケット(S3、GCP、Azure)を受動的に特定する軽量DNSサーバーです。CNAMEを検出し、解決チェーンを追跡し、バケットパターンを一致させ、ブルートフォースやAPIベースの発見に対する静かな代替手段を提供します。偵察やOSINTワークフローに最適です。
|
||||
- [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/)を**訪問**することもできます。
|
||||
@@ -77,7 +78,7 @@ s3scanner --threads 100 scan --buckets-file /tmp/final-words-s3.txt | grep buck
|
||||
|
||||
#### S3 バケットの略奪
|
||||
|
||||
オープンバケットがある場合、[**BucketLoot**](https://github.com/redhuntlabs/BucketLoot)は自動的に**興味深い情報を検索**できます。
|
||||
S3のオープンバケットがある場合、[**BucketLoot**](https://github.com/redhuntlabs/BucketLoot)は自動的に**興味深い情報を検索**できます。
|
||||
|
||||
### リージョンを見つける
|
||||
|
||||
@@ -85,7 +86,7 @@ AWSがサポートするすべてのリージョンは、[**https://docs.aws.ama
|
||||
|
||||
#### DNSによる
|
||||
|
||||
**`dig`**および**`nslookup`**を使用して、発見されたIPの**DNSリクエスト**を行うことで、バケットのリージョンを取得できます:
|
||||
**`dig`**および**`nslookup`**を使用して、発見されたIPの**DNSリクエスト**を行うことでバケットのリージョンを取得できます:
|
||||
```bash
|
||||
dig flaws.cloud
|
||||
;; ANSWER SECTION:
|
||||
@@ -96,12 +97,14 @@ Non-authoritative answer:
|
||||
11.192.218.52.in-addr.arpa name = s3-website-us-west-2.amazonaws.com.
|
||||
```
|
||||
解決されたドメインに「website」という単語が含まれていることを確認してください。\
|
||||
静的ウェブサイトには次のURLでアクセスできます: `flaws.cloud.s3-website-us-west-2.amazonaws.com`\
|
||||
または、バケットには次のURLでアクセスできます: `flaws.cloud.s3-us-west-2.amazonaws.com`
|
||||
静的ウェブサイトには次のようにアクセスできます: `flaws.cloud.s3-website-us-west-2.amazonaws.com`\
|
||||
または、バケットには次のようにアクセスできます: `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>)
|
||||
|
||||
@@ -134,7 +137,7 @@ https://{user_provided}.s3.amazonaws.com
|
||||
### 公開バケットからアカウントIDを取得する
|
||||
|
||||
新しい **`S3:ResourceAccount`** **ポリシー条件キー**を利用することで、AWSアカウントを特定することが可能です。この条件は、アカウントが存在するS3バケットに基づいてアクセスを**制限**します(他のアカウントベースのポリシーは、リクエスト元のプリンシパルが存在するアカウントに基づいて制限します)。\
|
||||
ポリシーには**ワイルドカード**を含めることができるため、アカウント番号を**1つずつ**見つけることが可能です。
|
||||
ポリシーには**ワイルドカード**を含めることができるため、アカウント番号を**1つの数字ずつ**見つけることが可能です。
|
||||
|
||||
このツールはそのプロセスを自動化します:
|
||||
```bash
|
||||
@@ -146,11 +149,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 アカウントに属していることを確認する
|
||||
|
||||
[**このブログ投稿**](https://blog.plerion.com/things-you-wish-you-didnt-need-to-know-about-s3/)で説明されているように、**バケットをリストする権限がある場合**、次のようなリクエストを送信することで、バケットが属する accountID を確認することが可能です。
|
||||
[**このブログ投稿**](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]"
|
||||
@@ -162,7 +165,7 @@ curl -X GET "[bucketname].amazonaws.com/" \
|
||||
|
||||
### ルートアカウント列挙としての使用されたメール
|
||||
|
||||
[**このブログ記事**](https://blog.plerion.com/things-you-wish-you-didnt-need-to-know-about-s3/)で説明されているように、ACLを介してS3バケットに対してメールに権限を付与しようとすることで、メールアドレスがAWSアカウントに関連しているかどうかを確認することが可能です。これがエラーを引き起こさない場合、そのメールはAWSアカウントのルートユーザーであることを意味します。
|
||||
[**このブログ記事**](https://blog.plerion.com/things-you-wish-you-didnt-need-to-know-about-s3/)で説明されているように、ACLを介してS3バケットに対してメールアドレスに権限を付与しようとすることで、そのメールアドレスがAWSアカウントに関連しているかどうかを確認することが可能です。これがエラーを引き起こさない場合、そのメールは何らかのAWSアカウントのルートユーザーであることを意味します。
|
||||
```python
|
||||
s3_client.put_bucket_acl(
|
||||
Bucket=bucket_name,
|
||||
|
||||
Reference in New Issue
Block a user