mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-29 14:13:20 -08:00
Translated ['src/pentesting-cloud/azure-security/az-services/az-static-w
This commit is contained in:
@@ -4,29 +4,33 @@
|
||||
|
||||
## Static Web Apps 基本情報
|
||||
|
||||
Azure Static Web Appsは、**GitHubなどのリポジトリからの自動CI/CDを備えた静的Webアプリをホスティングするためのクラウドサービス**です。グローバルなコンテンツ配信、サーバーレスバックエンド、組み込みのHTTPSを提供し、安全でスケーラブルです。しかし、リスクには、誤って構成されたCORS、不十分な認証、コンテンツの改ざんが含まれ、適切に管理されないとXSSやデータ漏洩などの攻撃にさらされる可能性があります。
|
||||
Azure Static Web Appsは、**GitHubなどのリポジトリからの自動CI/CDを備えた静的Webアプリをホスティングするためのクラウドサービス**です。グローバルなコンテンツ配信、サーバーレスバックエンド、組み込みのHTTPSを提供し、安全でスケーラブルです。しかし、サービスが「静的」と呼ばれていても、完全に安全であるとは限りません。リスクには、誤って構成されたCORS、不十分な認証、コンテンツの改ざんが含まれ、適切に管理されないとXSSやデータ漏洩などの攻撃にさらされる可能性があります。
|
||||
|
||||
### デプロイ認証
|
||||
|
||||
> [!TIP]
|
||||
> Static Appが作成されると、**デプロイメント認証ポリシー**として**デプロイメントトークン**と**GitHub Actionsワークフロー**の間で選択できます。
|
||||
> Static Appが作成されると、**デプロイ認証ポリシー**として**デプロイメントトークン**と**GitHub Actionsワークフロー**の間で選択できます。
|
||||
|
||||
- **デプロイメントトークン**: トークンが生成され、デプロイプロセスを認証するために使用されます。**このトークンを持つ人は、新しいバージョンのアプリをデプロイするのに十分です**。リポジトリにトークンを秘密として持つ**Github Actionが自動的にデプロイされ**、リポジトリが更新されるたびに新しいバージョンのアプリをデプロイします。
|
||||
- **GitHub Actionsワークフロー**: この場合、非常に似たGithub Actionもリポジトリにデプロイされ、**トークンも秘密に保存されます**。ただし、このGithub Actionには違いがあり、**`actions/github-script@v6`**アクションを使用してリポジトリのIDTokenを取得し、それを使用してアプリをデプロイします。
|
||||
- 両方のケースでアクション**`Azure/static-web-apps-deploy@v1`**が`azure_static_web_apps_api_token`パラメータのトークンと共に使用されますが、2番目のケースでは、`github_id_token`パラメータのIDTokenで認証が行われるため、`12345cbb198a77a092ff885781a62a15d51ef5e3654ca11234509ab54547270704-4140ccee-e04f-424f-b4ca-3d4dd123459c00f0702071d12345`のような有効な形式のランダムトークンだけでアプリをデプロイするのに十分です。
|
||||
|
||||
### Web App 認証
|
||||
### Webアプリ基本認証
|
||||
|
||||
Web Appにアクセスするために**パスワードを設定する**ことが可能です。Webコンソールでは、ステージング環境のみを保護するか、ステージングと本番の両方を保護するように設定できます。
|
||||
Webアプリにアクセスするための**パスワードを設定する**ことが可能です。Webコンソールでは、ステージング環境のみ、またはステージングと本番環境の両方を保護するように設定できます。
|
||||
|
||||
執筆時点でのパスワード保護されたWebアプリの外観は次のとおりです:
|
||||
執筆時点でパスワード保護されたWebアプリは次のようになります:
|
||||
|
||||
<figure><img src="../../../images/azure_static_password.png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
||||
**どのパスワードが使用されているか**、およびどの環境が保護されているかを確認することができます:
|
||||
```bash
|
||||
az rest --method GET \
|
||||
--url "/subscriptions/<subscription-id>/resourceGroups/Resource_Group_1/providers/Microsoft.Web/staticSites/<app-name>/config/basicAuth?api-version=2024-04-01"
|
||||
```
|
||||
しかし、これは**パスワードを平文で表示しません**。代わりに、次のようなものが表示されます: `"password": "**********************"`。
|
||||
しかし、これは**パスワードを平文で表示しません**、ただし、次のようなものが表示されます: `"password": "**********************"`。
|
||||
|
||||
### ルート
|
||||
### ルートとロール
|
||||
|
||||
ルートは、静的ウェブアプリ内で**受信HTTPリクエストがどのように処理されるか**を定義します。**`staticwebapp.config.json`**ファイルで構成されており、URLの書き換え、リダイレクト、アクセス制限、およびロールベースの認証を制御し、適切なリソースの処理とセキュリティを確保します。
|
||||
|
||||
@@ -58,6 +62,19 @@ az rest --method GET \
|
||||
}
|
||||
}
|
||||
```
|
||||
パスを**ロールで保護する**ことが可能であることに注意してください。これにより、ユーザーはアプリに認証し、そのパスにアクセスするためにそのロールを付与される必要があります。また、特定のユーザーに特定のロールを付与する**招待を作成する**ことも可能で、これはアプリ内での権限昇格に役立つかもしれません。
|
||||
|
||||
> [!TIP]
|
||||
> `staticwebapp.config.json`ファイルへの**変更が受け入れられない**ようにアプリを構成することが可能であることに注意してください。この場合、Githubからファイルを変更するだけでは不十分で、**アプリ内の設定を変更する**必要があります。
|
||||
|
||||
ステージングURLは次の形式です: `https://<app-subdomain>-<PR-num>.<region>.<res-of-app-domain>` 例えば: `https://ambitious-plant-0f764e00f-2.eastus2.4.azurestaticapps.net`
|
||||
|
||||
### マネージドアイデンティティ
|
||||
|
||||
Azure Static Web Appsは**マネージドアイデンティティ**を使用するように構成できますが、[このFAQ](https://learn.microsoft.com/en-gb/azure/static-web-apps/faq#does-static-web-apps-support-managed-identity-)で述べられているように、認証目的でAzure Key Vaultからシークレットを**抽出する**ためにのみサポートされています。他のAzureリソースにアクセスするためではありません。
|
||||
|
||||
詳細については、静的アプリでボールトシークレットを使用するAzureガイドをhttps://learn.microsoft.com/en-us/azure/static-web-apps/key-vault-secretsで見つけることができます。
|
||||
|
||||
## 列挙
|
||||
```bash
|
||||
# List Static Webapps
|
||||
@@ -86,6 +103,9 @@ az rest --method GET \
|
||||
## Once you have the database connection name ("default" by default) you can get the connection string with the credentials
|
||||
az rest --method POST \
|
||||
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/staticSites/<app-name>/databaseConnections/default/show?api-version=2021-03-01"
|
||||
|
||||
# Check connected backends
|
||||
az staticwebapp backends show --name <name> --resource-group <res-group>
|
||||
```
|
||||
## Webアプリを生成するための例
|
||||
|
||||
@@ -95,10 +115,12 @@ az rest --method POST \
|
||||
2. AzureポータルでStatic Web Appを作成し、GitHubアクセスを設定し、先にフォークした新しいリポジトリを選択します
|
||||
3. 作成し、数分待って、新しいページを確認してください!
|
||||
|
||||
## ポストエクスプロイテーション
|
||||
## 権限昇格とポストエクスプロイト
|
||||
|
||||
Azure Static Web Appsにおける権限昇格とポストエクスプロイトに関するすべての情報は、以下のリンクで見つけることができます:
|
||||
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-static-web-apps-post-exploitation.md
|
||||
../az-privilege-escalation/az-static-web-apps-privesc.md
|
||||
{{#endref}}
|
||||
|
||||
## 参考文献
|
||||
|
||||
Reference in New Issue
Block a user