Translated ['src/pentesting-cloud/azure-security/az-services/az-static-w

This commit is contained in:
Translator
2025-01-09 08:16:55 +00:00
parent 231d01cd23
commit 74bc967bf3

View File

@@ -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 等代
<figure><img src="../../../images/azure_static_password.png" alt=""><figcaption></figcaption></figure>
可以查看 **是否使用了任何密码** 以及哪些环境受到保护:
```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://<app-subdomain>-<PR-num>.<region>.<res-of-app-domain>`,例如:`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/<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 门户中创建一个静态 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}}
## 参考