Translated ['src/pentesting-ci-cd/cloudflare-security/cloudflare-domains

This commit is contained in:
Translator
2025-01-11 19:05:51 +00:00
parent 06ae0ca85c
commit 652d8299d6
44 changed files with 2150 additions and 515 deletions

View File

@@ -8,23 +8,23 @@
Amazon DynamoDBは、AWSによって**完全に管理されたサーバーレスのキー・バリューNoSQLデータベース**として提供されており、サイズに関係なく高性能アプリケーションを支えるために特化されています。このサービスは、固有のセキュリティ対策、途切れのないバックアップ、複数のリージョンにわたる自動レプリケーション、統合されたインメモリキャッシング、便利なデータエクスポートユーティリティなど、堅牢な機能を保証します。
DynamoDBの文脈では、従来のデータベースを構築する代わりに、**テーブルが作成されます**。各テーブルは、**テーブルの主キー**の不可欠な要素として**パーティションキー**の指定を義務付けます。このパーティションキーは、本質的に**ハッシュ値**であり、アイテムの取得とデータのさまざまなホストへの分配の両方において重要な役割を果たします。この分配は、データベースのスケーラビリティと可用性を維持するために重要です。さらに、データの整理をさらに洗練させるために**ソートキー**を組み込むオプションもあります。
DynamoDBの文脈では、従来のデータベースを構築する代わりに、**テーブルが作成されます**。各テーブルは、**テーブルの主キー**の不可欠な要素として**パーティションキー**の指定を義務付けています。このパーティションキーは、本質的に**ハッシュ値**であり、アイテムの取得とデータのさまざまなホストへの分配の両方において重要な役割を果たします。この分配は、データベースのスケーラビリティと可用性を維持するために重要です。さらに、データの整理をさらに洗練させるために**ソートキー**を組み込むオプションもあります。
### 暗号化
デフォルトでは、DynamoDBは**Amazon DynamoDBに属する**KMSキーを使用します。これは、少なくともあなたのアカウントに属するAWS管理キーではありません。
デフォルトでは、DynamoDBは**Amazon DynamoDBに属する**KMSキーを使用しており、少なくともあなたのアカウントに属するAWS管理キーさえも使用していません。
<figure><img src="https://lh4.googleusercontent.com/JjtNS7aA-_GRMgZb4v93jWEQJi6DQdUPq0FEpzZPdeyCeNoG05p0NJiV9Zs-ULs_-Tfjmx0W1ZgsE2Ui2ljo7D-1a87Xny-gpLVQO0XmXdFoph9ci1RepbVNwaCe9oPruEZSEDxGTxF5dIv6pW1WpT6kWA=s2048" alt=""><figcaption></figcaption></figure>
### バックアップとS3へのエクスポート
**テーブルバックアップ**の生成を**スケジュール**することや、**オンデマンド**で作成することが可能です。さらに、**テーブルのポイントインタイムリカバリPITRを有効にする**ことも可能です。ポイントインタイムリカバリは、DynamoDBデータの**35日間**の継続的な**バックアップ**を提供し、誤って書き込みや削除操作を行った場合に対する保護を助けます。
**テーブルバックアップ**の生成を**スケジュール**することや、**オンデマンド**で作成することが可能です。さらに、**テーブルのポイントインタイムリカバリPITRを有効にする**ことも可能です。ポイントインタイムリカバリは、DynamoDBデータの**35日間**の継続的な**バックアップ**を提供し、偶発的な書き込みや削除操作から保護するのに役立ちます。
**テーブルのデータをS3にエクスポート**することも可能ですが、テーブルには**PITRが有効**である必要があります。
### GUI
[ダイナモDBローカル](https://aws.amazon.com/blogs/aws/dynamodb-local-for-desktop-development/)、[dynalite](https://github.com/mhart/dynalite)、[localstack](https://github.com/localstack/localstack)などのローカルDynamoサービス用のGUIがあり、役立つ可能性があります: [https://github.com/aaronshaf/dynamodb-admin](https://github.com/aaronshaf/dynamodb-admin)
[https://github.com/aaronshaf/dynamodb-admin](https://github.com/aaronshaf/dynamodb-admin)など、役立つ可能性のある[ダイナモDBローカル](https://aws.amazon.com/blogs/aws/dynamodb-local-for-desktop-development/)、[dynalite](https://github.com/mhart/dynalite)、[localstack](https://github.com/localstack/localstack)などのローカルDynamoサービス用のGUIがあります。
### 列挙
```bash
@@ -84,20 +84,20 @@ aws dynamodb describe-endpoints #Dynamodb endpoints
DynamoDB データに **SQL 構文**でアクセスする方法があるため、典型的な **SQL インジェクションも可能**です。
{{#ref}}
https://book.hacktricks.xyz/pentesting-web/sql-injection
https://book.hacktricks.wiki/en/pentesting-web/sql-injection/index.html
{{#endref}}
### NoSQL インジェクション
DynamoDB では、データを取得するために異なる **条件**を使用できます。一般的な NoSQL インジェクションのように、データを取得するために **複数の条件を連鎖させる**ことが可能であれば、隠されたデータを取得したり(またはテーブル全体をダンプしたり)することができます。\
DynamoDB では、データを取得するために異なる **条件**を使用できます。一般的な NoSQL インジェクションのように、データを取得するために **複数の条件を連鎖させる**ことができれば、隠されたデータを取得したり(またはテーブル全体をダンプしたり)することができます。\
DynamoDB がサポートする条件はここで確認できます: [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html)
データが **`query`** または **`scan`** を介してアクセスされる場合、**異なる条件**がサポートされていることに注意してください。
> [!NOTE]
> 実際には、**Query** アクションは **主キー** **条件 "EQ" (等しい)** を指定する必要があり、これにより **NoSQL インジェクションに対してはるかに脆弱性が低く**(また、操作が非常に制限されることになります)。
> 実際には、**Query** アクションは**主キー** **条件 "EQ" (等しい)** を指定する必要があり、これにより **NoSQL インジェクションに対してはるかに脆弱性が低く**なり(また、操作が非常に制限されることになります)。
もし **比較**変更したり、新しいものを追加したりできれば、より多くのデータを取得することができます。
比較**変更**したり、新しいものを追加したりできれば、より多くのデータを取得できる可能性があります。
```bash
# Comparators to dump the database
"NE": "a123" #Get everything that doesn't equal "a123"
@@ -105,7 +105,7 @@ DynamoDB がサポートする条件はここで確認できます: [https://doc
"GT": " " #All strings are greater than a space
```
{{#ref}}
https://book.hacktricks.xyz/pentesting-web/nosql-injection
https://book.hacktricks.wiki/en/pentesting-web/nosql-injection.html
{{#endref}}
### 生のJsonインジェクション
@@ -115,7 +115,7 @@ https://book.hacktricks.xyz/pentesting-web/nosql-injection
**DynamoDB**は、DB内のデータを**検索**するために**Json**オブジェクトを受け入れます。検索に送信されるjsonオブジェクトに書き込むことができる場合、DBのダンプを作成し、すべての内容を取得することができます。
例えば、次のようなリクエストにインジェクトすることです:
例えば、次のようなリクエストに注入することができます:
```bash
'{"Id": {"ComparisonOperator": "EQ","AttributeValueList": [{"N": "' + user_input + '"}]}}'
```
@@ -123,7 +123,7 @@ https://book.hacktricks.xyz/pentesting-web/nosql-injection
`1000"}],"ComparisonOperator": "GT","AttributeValueList": [{"N": "0`
ID 1000を検索するため「EQ」条件を修正し、その後、すべてのデータを探します。Id文字列が0より大きいもの、すなわちすべてです。
ID 1000を検索するため「EQ」条件を修正し、その後、すべてのデータを取得するためにId文字列が0より大きいものを探します。
別の**ログインを使用した脆弱な例**は次のようになります:
```python
@@ -141,7 +141,7 @@ scan_filter = """{
dynamodb.scan(TableName="table-name", ScanFilter=json.loads(scan_filter))
```
これに対して脆弱である可能性があります
これに対して脆弱である可能性があります:
```
username: none"}],"ComparisonOperator": "NE","AttributeValueList": [{"S": "none
password: none"}],"ComparisonOperator": "NE","AttributeValueList": [{"S": "none
@@ -152,7 +152,7 @@ password: none"}],"ComparisonOperator": "NE","AttributeValueList": [{"S": "none
```java
new ScanSpec().withProjectionExpression("UserName").withFilterExpression(user_input+" = :username and Password = :password").withValueMap(valueMap)
```
DynamoDBでアイテムをスキャンする際に**フィルター式**で属性**値**を**置き換える**ために検索する場合、トークンは**`:`**文字で**始まる**必要があります。そのため、これらのトークンは実際の**属性値が実行時に置き換えられます**。
DynamoDBでアイテムをスキャンする際に**フィルター式**で属性**値**を**置き換える**ために検索する場合、トークンは**`:`**文字で**始まる**必要があります。そのため、これらのトークンは**実行時に実際の属性値に置き換えられます**。
したがって、前述のようなログインは次のようなものでバイパスできます:
```bash