From 74bc967bf3cb4b42281ff6bf50bf55811707ef28 Mon Sep 17 00:00:00 2001 From: Translator Date: Thu, 9 Jan 2025 08:16:55 +0000 Subject: [PATCH] Translated ['src/pentesting-cloud/azure-security/az-services/az-static-w --- .../az-services/az-static-web-apps.md | 36 +++++++++++++++---- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/src/pentesting-cloud/azure-security/az-services/az-static-web-apps.md b/src/pentesting-cloud/azure-security/az-services/az-static-web-apps.md index 7bf24333f..80e6d4960 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-static-web-apps.md +++ b/src/pentesting-cloud/azure-security/az-services/az-static-web-apps.md @@ -4,13 +4,18 @@ ## Static Web Apps 基本信息 -Azure Static Web Apps 是一个云服务,用于托管 **来自 GitHub 等代码库的静态 web 应用,具有自动 CI/CD**。它提供全球内容交付、无服务器后端和内置 HTTPS,使其安全且可扩展。然而,风险包括配置错误的 CORS、不充分的身份验证和内容篡改,如果管理不当,可能会使应用面临 XSS 和数据泄露等攻击。 +Azure Static Web Apps 是一个云服务,用于托管 **来自 GitHub 等代码库的静态 web 应用,并提供自动 CI/CD**。它提供全球内容交付、无服务器后端和内置 HTTPS,使其安全且可扩展。然而,即使该服务被称为“静态”,也并不意味着它完全安全。风险包括配置错误的 CORS、不充分的身份验证和内容篡改,如果管理不当,可能会使应用面临 XSS 和数据泄露等攻击。 + +### 部署身份验证 > [!TIP] -> 创建静态应用时,您可以选择 **部署授权策略**,在 **部署令牌** 和 **GitHub Actions 工作流** 之间进行选择。 +> 创建静态应用时,您可以在 **部署授权策略** 之间选择 **部署令牌** 和 **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` 参数中的令牌,但在第二种情况下,格式有效的随机令牌如 `12345cbb198a77a092ff885781a62a15d51ef5e3654ca11234509ab54547270704-4140ccee-e04f-424f-b4ca-3d4dd123459c00f0702071d12345` 就足以部署应用,因为授权是通过 `github_id_token` 参数中的 IDToken 完成的。 -### Web 应用身份验证 +### Web 应用基本身份验证 可以 **配置密码** 来访问 Web 应用。Web 控制台允许配置它以保护仅暂存环境或暂存和生产环境。 @@ -18,7 +23,6 @@ Azure Static Web Apps 是一个云服务,用于托管 **来自 GitHub 等代
- 可以查看 **是否使用了任何密码** 以及哪些环境受到保护: ```bash az rest --method GET \ @@ -26,7 +30,7 @@ az rest --method GET \ ``` 然而,这 **不会以明文显示密码**,而是类似于:`"password": "**********************"`。 -### 路由 +### 路由与角色 路由定义了 **如何处理传入的 HTTP 请求** 在静态 Web 应用程序中。配置在 **`staticwebapp.config.json`** 文件中,它们控制 URL 重写、重定向、访问限制和基于角色的授权,确保资源的正确处理和安全性。 @@ -58,6 +62,19 @@ az rest --method GET \ } } ``` +注意如何可以通过**角色保护路径**,然后,用户需要对应用进行身份验证并被授予该角色才能访问该路径。还可以**创建邀请**,通过 EntraID、Facebook、GitHub、Google、Twitter 授予特定用户特定角色,这可能对在应用内提升权限很有用。 + +> [!TIP] +> 请注意,可以配置应用,使得**对 `staticwebapp.config.json`** 文件的更改不被接受。在这种情况下,仅仅从 Github 更改文件可能不够,还需要**在应用中更改设置**。 + +暂存 URL 的格式为:`https://-..`,例如:`https://ambitious-plant-0f764e00f-2.eastus2.4.azurestaticapps.net` + +### 托管身份 + +Azure Static Web Apps 可以配置为使用**托管身份**,但是,如[此常见问题解答](https://learn.microsoft.com/en-gb/azure/static-web-apps/faq#does-static-web-apps-support-managed-identity-)中提到的,它们仅支持**从 Azure Key Vault 提取用于身份验证的机密,而不支持访问其他 Azure 资源**。 + +有关更多信息,您可以在 https://learn.microsoft.com/en-us/azure/static-web-apps/key-vault-secrets 中找到 Azure 指南,了解如何在静态应用中使用保管库机密。 + ## 枚举 ```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//resourceGroups//providers/Microsoft.Web/staticSites//databaseConnections/default/show?api-version=2021-03-01" + +# Check connected backends +az staticwebapp backends show --name --resource-group ``` ## 生成 Web 应用的示例 @@ -95,10 +115,12 @@ az rest --method POST \ 2. 在 Azure 门户中创建一个静态 Web 应用,配置 GitHub 访问并选择之前叉出的新仓库 3. 创建它,等待几分钟,然后检查您的新页面! -## 后期利用 +## 权限提升和后期利用 + +有关 Azure 静态 Web 应用中权限提升和后期利用的所有信息可以在以下链接找到: {{#ref}} -../az-privilege-escalation/az-static-web-apps-post-exploitation.md +../az-privilege-escalation/az-static-web-apps-privesc.md {{#endref}} ## 参考