Translated ['src/pentesting-ci-cd/ansible-tower-awx-automation-controlle

This commit is contained in:
Translator
2025-08-01 10:17:06 +00:00
parent 66a462aa95
commit 83bb7cf26a
47 changed files with 591 additions and 409 deletions

View File

@@ -1,13 +1,15 @@
# GCP - ペンテストのための権限
GCP環境をペンテストする場合、**GCP**で使用されている**すべてまたはほとんどのサービス**を**確認するための十分な権限**を要求する必要があります。理想的には、クライアントに次のことを依頼すべきです:
{{#include ../../banners/hacktricks-training.md}}
GCP環境をペンテストするには、**GCP**で使用されている**すべてまたはほとんどのサービス**を**確認するために十分な権限**を要求する必要があります。理想的には、クライアントに以下を作成するよう依頼すべきです:
* **新しいプロジェクトを作成**
* そのプロジェクト内に**サービスアカウント作成****json資格情報**を取得)するか、**新しいユーザーを作成**する。
* **サービスアカウント**または**ユーザー**に、後で説明する**役割**を**組織**に対して**付与**
* そのプロジェクト内に**サービスアカウント**を**作成****json資格情報**を取得)するか、**新しいユーザー**を作成する。
* **サービスアカウント**または**ユーザー**に、後で述べる**役割**を組織全体に**付与**
* 作成したプロジェクトで、この記事で後述する**API**を**有効化**
**後で提案するツールを使用するための権限のセット**
後で提案するツールを使用するための**権限のセット**
```bash
roles/viewer
roles/resourcemanager.folderViewer
@@ -129,4 +131,4 @@ roles/iam.securityReviewer
roles/iam.organizationRoleViewer
roles/bigquery.metadataViewer
```
{{#include ../../banners/hacktricks-training.md}}

View File

@@ -1 +1,3 @@
# GCP - 永続性
# GCP - Persistence
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -1 +1,3 @@
# GCP - ポストエクスプロイテーション
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -4,7 +4,7 @@
## Cloud Functions
Cloud Functionsに関する情報を見つけるには、以下を参照してください:
Cloud Functionsに関する情報を見つけるには、以下を参照してください
{{#ref}}
../gcp-services/gcp-cloud-functions-enum.md
@@ -12,18 +12,18 @@ Cloud Functionsに関する情報を見つけるには、以下を参照して
### `cloudfunctions.functions.sourceCodeGet`
この権限を使用すると、Cloud Functionの**ソースコードをダウンロードするための署名付きURLを取得**できます:
この権限を使用すると、Cloud Functionの**ソースコードをダウンロードするための署名付き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 '{}'
```
### Cloud Functionリクエストの盗難
### Cloud Function リクエストの盗難
Cloud Functionがユーザーが送信している機密情報パスワードやトークンを管理している場合、十分な権限があれば、**関数のソースコードを変更してこの情報を外部に流出させる**ことができます。
Cloud Function がユーザーが送信している機密情報(例:パスワードやトークン)を管理している場合、十分な権限があれば、**関数のソースコードを変更してこの情報を外部に流出させる**ことができます。
さらに、Pythonで実行されているCloud Functionsは、**flask**を使用してウェブサーバーを公開しています。もし、flaksプロセス内にコードインジェクションの脆弱性例えばSSTI脆弱性見つけた場合、HTTPリクエストを受け取るための**悪意のある関数**に**関数ハンドラーをオーバーライド**することが可能であり、その関数はリクエストを正当なハンドラーに渡す前に**リクエストを外部に流出させる**ことができます。
さらに、Python で実行されている Cloud Functions**flask** を使用してウェブサーバーを公開しています。もし、flaks プロセス内にコードインジェクションの脆弱性(例えば SSTI 脆弱性)見つかれば、**HTTP リクエストを受け取る関数ハンドラーを上書き**して、**リクエストを外部に流出させる悪意のある関数**に変更することが可能です。
例えば、このコードは攻撃を実装しています:
```python
@@ -98,7 +98,7 @@ return "/tmp/function.py doesn't exists"
# Get relevant function names
handler_fname = os.environ.get("FUNCTION_TARGET") # Cloud Function env variable indicating the name of the function to habdle requests
source_path = os.environ.get("FUNCTION_SOURCE", "./main.py") # Path to the source file of the Cloud Function (./main.py by default)
source_path = os.environ.get("FUNCTION_SOURCE", "./main.py") # Path to the source file of the Cloud Function (main.py by default)
realpath = os.path.realpath(source_path) # Get full path
# Get the modules representations
@@ -122,4 +122,4 @@ return "Injection completed!"
except Exception as e:
return str(e)
```
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -1,22 +1,20 @@
# GCP - カスタムSSHメタデータの追加
## GCP - カスタムSSHメタデータの追加
{{#include ../../../../banners/hacktricks-training.md}}
### メタデータの変更 <a href="#modifying-the-metadata" id="modifying-the-metadata"></a>
## メタデータの変更 <a href="#modifying-the-metadata" id="modifying-the-metadata"></a>
インスタンスのメタデータの変更は、**攻撃者が必要な権限をた場合に重大なセキュリティリスクを引き起こす可能性があります**。
インスタンスのメタデータの変更は、**攻撃者が必要な権限を取得した場合に重大なセキュリティリスクを引き起こす可能性があります**。
#### **カスタムメタデータへのSSHキーの組み込み**
### **カスタムメタデータへのSSHキーの組み込み**
GCPでは、**Linuxシステム**はしばしば[Google Compute Engine用のPython Linux Guest Environment](https://github.com/GoogleCloudPlatform/compute-image-packages/tree/master/packages/python-google-compute-engine#accounts)からスクリプトを実行します。この重要なコンポーネントは、**定期的に**インスタンスメタデータエンドポイントをチェックして**認可されたSSH公開鍵の更新**を確認するために設計された[アカウントデーモン](https://github.com/GoogleCloudPlatform/compute-image-packages/tree/master/packages/python-google-compute-engine#accounts)です。
GCPでは、**Linuxシステム**はしばしば[Google Compute Engine用のPython Linux Guest Environment](https://github.com/GoogleCloudPlatform/compute-image-packages/tree/master/packages/python-google-compute-engine#accounts)からスクリプトを実行します。この中で重要なコンポーネントは[accounts daemon](https://github.com/GoogleCloudPlatform/compute-image-packages/tree/master/packages/python-google-compute-engine#accounts)であり、これは**定期的に**インスタンスのメタデータエンドポイントをチェックして**認可されたSSH公開鍵の更新**を確認するように設計されています。
したがって、攻撃者がカスタムメタデータを変更できる場合、デーモンが新しい公開鍵を見つけるように仕向けることができ、それが処理されて**ローカルシステムに統合されます**。鍵は、**既存のユーザーの`~/.ssh/authorized_keys`ファイルに追加されるか、鍵の形式に応じて`sudo`権限を持つ新しいユーザーが作成される可能性があります**。攻撃者はホストを侵害することができます。
#### **既存の特権ユーザーにSSHキーを追加する**
### **既存の特権ユーザーにSSHキーを追加する**
1. **インスタンス上の既存のSSHキーを調査する:**
1. **インスタンス上の既存のSSHキーを調る:**
- インスタンスとそのメタデータを記述するコマンドを実行して、既存のSSHキーを見つけます。出力の関連セクションは`metadata`の下、特に`ssh-keys`キーの下にあります。
@@ -24,7 +22,7 @@ GCPでは、**Linuxシステム**はしばしば[Google Compute Engine用のPyth
gcloud compute instances describe [INSTANCE] --zone [ZONE]
```
- SSHキーの形式に注意してください: ユーザー名は鍵の前にあり、コロンで区切られています。
- SSHキーの形式に注意してくださいユーザー名は鍵の前にあり、コロンで区切られています。
2. **SSHキーのメタデータ用のテキストファイルを準備する:**
- ユーザー名とそれに対応するSSHキーの詳細を`meta.txt`という名前のテキストファイルに保存します。これは、新しいキーを追加しながら既存のキーを保持するために重要です。
@@ -40,7 +38,7 @@ ssh-keygen -t rsa -C "alice" -f ./key -P "" && cat ./key.pub
4. **インスタンスのSSHキーのメタデータを更新する:**
- `gcloud compute instances add-metadata`コマンドを使用して、インスタンスに更新されたSSHキーのメタデータを適用します。
- `gcloud compute instances add-metadata`コマンドを使用して、更新されたSSHキーのメタデータをインスタンスに適用します。
```bash
gcloud compute instances add-metadata [INSTANCE] --metadata-from-file ssh-keys=meta.txt
@@ -55,9 +53,9 @@ ssh -i ./key alice@localhost
sudo id
```
#### **新しい特権ユーザーを作成し、SSHキーを追加する**
### **新しい特権ユーザーを作成し、SSHキーを追加する**
興味深いユーザーが見つからない場合は、`sudo`権限を与えられる新しいユーザーを作成することが可能です:
興味深いユーザーが見つからない場合は、`sudo`権限を与えられる新しいユーザーを作成することが可能です
```bash
# define the new account username
NEWUSER="definitelynotahacker"
@@ -75,13 +73,13 @@ gcloud compute instances add-metadata [INSTANCE_NAME] --metadata-from-file ssh-k
# ssh to the new account
ssh -i ./key "$NEWUSER"@localhost
```
#### プロジェクトレベルのSSHキー <a href="#sshing-around" id="sshing-around"></a>
### プロジェクトレベルのSSHキー <a href="#sshing-around" id="sshing-around"></a>
**プロジェクトレベルでSSHキーを適用する**ことで、クラウド環境内の複数の仮想マシンVMへのSSHアクセスを拡大することが可能です。このアプローチにより、プロジェクト内明示的にプロジェクト全体のSSHキーをブロックしていないインスタンスへのSSHアクセスが可能になります。以下は要約ガイドです
**プロジェクトレベルでSSHキーを適用する**ことで、クラウド環境内の複数の仮想マシンVMへのSSHアクセスの範囲を広げることが可能です。このアプローチにより、プロジェクト内明示的にプロジェクト全体のSSHキーをブロックしていないインスタンスへのSSHアクセスが可能になります。以下は要約ガイドです
1. **プロジェクトレベルでSSHキーを適用する**
- `gcloud compute project-info add-metadata`コマンドを使用して、`meta.txt`からプロジェクトのメタデータにSSHキーを追加します。このアクションにより、VMが「プロジェクト全体のSSHキーをブロック」オプションを有効にしていない限り、プロジェクト内のすべてのVMでSSHキーが認識されます。
- `gcloud compute project-info add-metadata`コマンドを使用して、`meta.txt`からプロジェクトのメタデータにSSHキーを追加します。このアクションにより、VMが「プロジェクト全体のSSHキーをブロック」オプションを有効にしていない限り、SSHキーがプロジェクト内のすべてのVMで認識されるようになります。
```bash
gcloud compute project-info add-metadata --metadata-from-file ssh-keys=meta.txt

View File

@@ -4,11 +4,11 @@
## serviceusage
次の権限はAPIキーを作成し、盗むのに役立ちます。ドキュメントからの注意点: _APIキーは、**プリンシパルなしでアプリケーションを識別する**シンプルな暗号化された文字列です。これらは、**公データに匿名でアクセスする**ために便利であり、**クォータ****請求**のためにAPIリクエストをプロジェクトに**関連付ける**ために使用されます。_
次の権限はAPIキーを作成および盗むのに役立ちます。ドキュメントからの注意点: _APIキーは、**プリンシパルなしでアプリケーションを識別する**シンプルな暗号化された文字列です。これらは、**公データに匿名でアクセスする**ために便利であり、**クォータ**および**請求**のためにAPIリクエストをプロジェクトに**関連付ける**ために使用されます。_
したがって、APIキーを使用すると、その会社にAPIの使用料を支払わせることができますが、権限を昇格させることはできません。
他の権限やAPIキー生成する方法については、次を確認してください:
他の権限やAPIキー生成方法については、次を確認してください:
{{#ref}}
gcp-apikeys-privesc.md
@@ -16,13 +16,13 @@ gcp-apikeys-privesc.md
### `serviceusage.apiKeys.create`
**APIキーを作成する**ために使用できる文書化されていないAPIが見つかりました:
**APIキーを作成するために使用できる** undocumented APIが見つかりました:
```bash
curl -XPOST "https://apikeys.clients6.google.com/v1/projects/<project-uniq-name>/apiKeys?access_token=$(gcloud auth print-access-token)"
```
### `serviceusage.apiKeys.list`
に作成されたAPIキーをリストするための別の文書化されていないAPIが見つかりましたAPIキーはレスポンスに表示されます
存のAPIキーをリストするための別の文書化されていないAPIが見つかりましたAPIキーはレスポンスに表示されます
```bash
curl "https://apikeys.clients6.google.com/v1/projects/<project-uniq-name>/apiKeys?access_token=$(gcloud auth print-access-token)"
```
@@ -42,7 +42,7 @@ curl "https://apikeys.clients6.google.com/v1/projects/<project-uniq-name>/apiKey
[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見してください。私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションです。
[**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう
[**official PEASS & HackTricks swag**](https://peass.creator-spring.com)を手に入れてください
**Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/carlospolopm)**.**
@@ -51,3 +51,7 @@ curl "https://apikeys.clients6.google.com/v1/projects/<project-uniq-name>/apiKey
**.**
</details>
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -1 +1,3 @@
# GCP - サービス
{{#include ../../../banners/hacktricks-training.md}}