mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-09 22:30:47 -08:00
Translated ['src/pentesting-cloud/azure-security/az-persistence/az-cloud
This commit is contained in:
@@ -77,6 +77,8 @@ def ref(matchobj):
|
||||
logger.error(f'Error getting chapter title: {path.normpath(path.join(dir,href))}')
|
||||
sys.exit(1)
|
||||
|
||||
if href.endswith("/README.md"):
|
||||
href = href.replace("/README.md", "/index.html")
|
||||
|
||||
template = f"""<a class="content_ref" href="{href}"><span class="content_ref_label">{title}</span></a>"""
|
||||
|
||||
|
||||
@@ -398,8 +398,8 @@
|
||||
- [Az - Enumeration Tools](pentesting-cloud/azure-security/az-enumeration-tools.md)
|
||||
- [Az - Unauthenticated Enum & Initial Entry](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/README.md)
|
||||
- [Az - OAuth Apps Phishing](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-oauth-apps-phishing.md)
|
||||
- [Az - Storage Unath](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-storage-unauth.md)
|
||||
- [Az - VMs Unath](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-vms-unauth.md)
|
||||
- [Az - Storage Unauth](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-storage-unauth.md)
|
||||
- [Az - VMs Unauth](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-vms-unauth.md)
|
||||
- [Az - Device Code Authentication Phishing](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-device-code-authentication-phishing.md)
|
||||
- [Az - Password Spraying](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-password-spraying.md)
|
||||
- [Az - Services](pentesting-cloud/azure-security/az-services/README.md)
|
||||
|
||||
@@ -22,7 +22,7 @@ Azure Cloud Shell 提供命令行访问以管理 Azure 资源,具有持久存
|
||||
* **持久存储**:Azure Cloud Shell 的主目录挂载在 Azure 文件共享上,即使会话结束后也保持不变。
|
||||
* **启动脚本**:像 .bashrc 这样的文件在每个会话开始时自动执行,允许在云 shell 启动时进行持久执行。
|
||||
|
||||
在 .bashrc 中的示例后门:
|
||||
.bashrc 中的示例后门:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
@@ -49,7 +49,7 @@ curl -H "Metadata:true" "http://169.254.169.254/metadata/identity/oauth2/token?a
|
||||
<summary>支持 HackTricks</summary>
|
||||
|
||||
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 **上关注我们** [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
|
||||
|
||||
</details>
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
{% endcontent-ref %}
|
||||
|
||||
### "Microsoft.Logic/workflows/read", "Microsoft.Logic/workflows/write" && "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action"
|
||||
拥有这些权限后,您可以修改 Logic App 工作流并管理其身份。具体来说,您可以将系统分配和用户分配的托管身份分配或移除到工作流,这使得 Logic App 可以在没有显式凭据的情况下进行身份验证并访问其他 Azure 资源。
|
||||
拥有这些权限后,您可以修改 Logic App 工作流并管理其身份。具体而言,您可以将系统分配和用户分配的托管身份分配或移除到工作流,这使得 Logic App 可以在没有显式凭据的情况下进行身份验证并访问其他 Azure 资源。
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
@@ -61,7 +61,7 @@ az webapp start/stop/restart \
|
||||
|
||||
### "Microsoft.Web/sites/config/list/action", "Microsoft.Web/sites/read" && "Microsoft.Web/sites/config/write"
|
||||
|
||||
通过此权限,您可以配置或修改 Web 应用的设置,包括托管在应用服务计划上的逻辑应用。这允许更改应用设置、连接字符串、身份验证配置等。
|
||||
通过此权限,您可以配置或修改 web 应用的设置,包括托管在 App Service Plan 上的 Logic Apps。这允许更改应用设置、连接字符串、身份验证配置等。
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
@@ -88,7 +88,7 @@ az logic integration-account create \
|
||||
|
||||
### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/batchConfigurations/write"
|
||||
|
||||
拥有此权限,您可以在 Azure Logic Apps 集成帐户中创建或修改批处理配置。批处理配置定义了 Logic Apps 如何处理和分组传入的消息以进行批处理。
|
||||
拥有此权限,您可以在 Azure Logic Apps 集成帐户中创建或修改批处理配置。批处理配置定义了 Logic Apps 如何处理和分组传入消息以进行批处理。
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
@@ -142,7 +142,7 @@ az logic integration-account partner create \
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/sessions/write"
|
||||
拥有此权限,您可以在 Azure Logic Apps 集成帐户中创建或修改会话。会话用于 B2B 工作流,以在定义的时间段内对消息进行分组并跟踪相关交易。
|
||||
通过此权限,您可以在 Azure Logic Apps 集成帐户中创建或修改会话。会话用于 B2B 工作流,以在定义的时间段内对消息进行分组并跟踪相关交易。
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
@@ -176,7 +176,7 @@ az logic integration-account session create \
|
||||
<summary>支持 HackTricks</summary>
|
||||
|
||||
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在 Twitter 上关注** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
|
||||
|
||||
</details>
|
||||
|
||||
@@ -50,7 +50,7 @@ az rest \
|
||||
--headers "Content-Type=application/json"
|
||||
```
|
||||
### ("Microsoft.Web/sites/read", "Microsoft.Web/sites/basicPublishingCredentialsPolicies/read", "Microsoft.Web/sites/write", "Microsoft.Web/sites/config/list/action") && ("Microsoft.Web/sites/start/action")
|
||||
拥有这些权限后,您可以使用 ZIP 文件部署来部署 Logic App 工作流。这些权限允许执行诸如读取应用程序详细信息、访问发布凭据、写入更改和列出应用程序配置等操作。结合启动权限,您可以更新并部署具有所需内容的新 Logic App。
|
||||
拥有这些权限,您可以使用 ZIP 文件部署来部署 Logic App 工作流。这些权限允许执行诸如读取应用程序详细信息、访问发布凭据、写入更改和列出应用程序配置等操作。结合启动权限,您可以更新并部署具有所需内容的新 Logic App。
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
||||
@@ -18,17 +18,17 @@ Azure App Services 使开发人员能够 **无缝构建、部署和扩展 Web
|
||||
应用程序有一些有趣的配置:
|
||||
|
||||
- **始终开启**:确保应用程序始终运行。如果未启用,应用程序将在 20 分钟不活动后停止运行,并在收到请求时重新启动。
|
||||
- 如果您有需要持续运行的 WebJob,这是必需的,因为如果应用程序停止,WebJob 将停止。
|
||||
- 如果您有需要持续运行的 Web 作业,这是必需的,因为如果应用程序停止,Web 作业也会停止。
|
||||
- **SSH**:如果启用,具有足够权限的用户可以使用 SSH 连接到应用程序。
|
||||
- **调试**:如果启用,具有足够权限的用户可以调试应用程序。然而,这将在每 48 小时自动禁用。
|
||||
- **调试**:如果启用,具有足够权限的用户可以调试应用程序。但是,这会在每 48 小时自动禁用。
|
||||
- **Web 应用 + 数据库**:Web 控制台允许创建带有数据库的应用程序。在这种情况下,可以选择要使用的数据库(SQLAzure、PostgreSQL、MySQL、MongoDB),并且还允许您创建 Azure Cache for Redis。
|
||||
- 包含数据库和 Redis 凭据的 URL 将存储在 **appsettings** 中。
|
||||
- **容器**:可以通过指示容器的 URL 和访问凭据将容器部署到 App Service。
|
||||
- **挂载**:可以从存储帐户创建 5 个挂载,这些存储帐户可以是 Azure Blob(只读)或 Azure Files。配置将存储访问密钥在存储帐户中。
|
||||
- **挂载**:可以从存储帐户创建 5 个挂载,这些存储帐户可以是 Azure Blob(只读)或 Azure Files。配置将存储访问密钥在存储帐户上。
|
||||
|
||||
## Basic Authentication
|
||||
|
||||
在创建 Web 应用程序(通常是 Azure 函数)时,可以指示是否要 **启用基本身份验证**(默认禁用)。这基本上 **启用 SCM(源代码管理)和 FTP(文件传输协议)**,因此可以使用这些技术部署应用程序。
|
||||
在创建 Web 应用程序(通常是 Azure 函数)时,可以指示是否要 **启用基本身份验证**(默认情况下禁用)。这基本上 **启用 SCM(源控制管理器)和 FTP(文件传输协议)**,因此可以使用这些技术部署应用程序。
|
||||
|
||||
要访问 SCM 和 FTP 服务器,需要 **用户名和密码**。因此,Azure 提供了一些 **API 来获取这些平台的 URL** 和凭据。
|
||||
|
||||
@@ -39,18 +39,18 @@ SCM
|
||||
|
||||
### Kudu
|
||||
|
||||
Kudu 是 **管理 SCM 和 Web/API 接口** 的平台,用于管理 App Service,并提供基于 Git 的部署、远程调试和文件管理功能。可以通过在 Web 应用中定义的 SCM URL 访问它。
|
||||
Kudu 是 **管理 SCM 和 Web 及 API 接口** 的平台,用于管理 App Service,并提供基于 Git 的部署、远程调试和文件管理功能。可以通过在 Web 应用程序中定义的 SCM URL 访问它。
|
||||
|
||||
请注意,App Services 和 Function Apps 使用的 Kudu 版本不同,Function Apps 的版本要有限得多。
|
||||
|
||||
您可以在 Kudu 中找到的一些有趣的端点包括:
|
||||
您可以在 Kudu 中找到一些有趣的端点:
|
||||
- `/BasicAuth`:您需要访问此路径以 **登录 Kudu**。
|
||||
- `/DebugConsole`:一个控制台,允许您在 Kudu 运行的环境中执行命令。
|
||||
- 请注意,此环境 **无法访问** 元数据服务以获取令牌。
|
||||
- `/webssh/host`:一个基于 Web 的 SSH 客户端,允许您连接到应用程序运行的容器内。
|
||||
- 此环境 **可以访问** 元数据服务,以便从分配的管理身份中获取令牌。
|
||||
- `/Env`:获取有关系统、应用设置、环境变量、连接字符串和 HTTP 头的信息。
|
||||
- `/wwwroot/`:Web 应用的根目录。您可以从这里下载所有文件。
|
||||
- `/wwwroot/`:Web 应用程序的根目录。您可以从这里下载所有文件。
|
||||
|
||||
此外,Kudu 曾经是开源的,地址为 [https://github.com/projectkudu/kudu](https://github.com/projectkudu/kudu),但该项目已被弃用,比较当前 Azure 中的 Kudu 与旧版 Kudu 的行为,可以看到 **许多事情已经改变**。
|
||||
|
||||
@@ -65,19 +65,19 @@ App Services 默认允许将代码作为 zip 文件上传,但也允许连接
|
||||
- 您可以通过运行 `az webapp deployment source show --name <app-name> --resource-group <res-group>` 或 `az rest --method POST --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/config/metadata/list?api-version=2022-03-01" --resource "https://management.azure.com"` 获取远程仓库的凭据。
|
||||
- 还可以使用 **Azure Repository**。
|
||||
- 还可以配置 **本地 git 仓库**。
|
||||
- 您可以通过 `az webapp deployment source show --name <app-name> --resource-group <res-group>` 获取 git 仓库的 URL,这将是应用的 SCM URL。
|
||||
- 要克隆它,您将需要 SCM 凭据,可以通过 `az webapp deployment list-publishing-profiles --resource-group <res-group> -n <name>` 获取。
|
||||
- 您可以通过 `az webapp deployment source show --name <app-name> --resource-group <res-group>` 获取 git 仓库的 URL,这将是应用程序的 SCM URL。
|
||||
- 要克隆它,您需要 SCM 凭据,可以通过 `az webapp deployment list-publishing-profiles --resource-group <res-group> -n <name>` 获取。
|
||||
|
||||
## Webjobs
|
||||
|
||||
Azure WebJobs 是 **在 Azure App Service 环境中运行的后台任务**。它们允许开发人员在 Web 应用程序旁边执行脚本或程序,使处理异步或耗时操作(例如文件处理、数据处理或计划任务)变得更加容易。
|
||||
WebJobs 有 2 种类型:
|
||||
- **持续**:无限期循环运行,并在创建后立即触发。它非常适合需要持续处理的任务。然而,如果应用程序因未启用始终开启而停止运行,并且在过去 20 分钟内未收到请求,则 WebJob 也将停止。
|
||||
- **触发**:按需或基于计划运行。它最适合定期任务,例如批量数据更新或维护例程。
|
||||
Azure WebJobs 是 **在 Azure App Service 环境中运行的后台任务**。它们允许开发人员在其 Web 应用程序旁边执行脚本或程序,使处理异步或耗时操作(如文件处理、数据处理或计划任务)变得更加容易。
|
||||
Web 作业有 2 种类型:
|
||||
- **持续**:无限期循环运行,并在创建后立即触发。它非常适合需要持续处理的任务。但是,如果应用程序因未启用始终开启而停止运行,并且在过去 20 分钟内未收到请求,则 Web 作业也会停止。
|
||||
- **触发**:按需或基于计划运行。最适合定期任务,例如批量数据更新或维护例程。
|
||||
|
||||
从攻击者的角度来看,WebJobs 非常有趣,因为它们可以用来 **在环境中执行代码** 并 **提升权限** 到附加的管理身份。
|
||||
从攻击者的角度来看,Web 作业非常有趣,因为它们可以用来 **在环境中执行代码** 并 **提升权限** 到附加的管理身份。
|
||||
|
||||
此外,检查 WebJobs 生成的 **日志** 也总是很有趣,因为它们可能包含 **敏感信息**。
|
||||
此外,检查 Web 作业生成的 **日志** 也总是很有趣,因为它们可能包含 **敏感信息**。
|
||||
|
||||
## Slots
|
||||
|
||||
@@ -87,9 +87,9 @@ Azure App Service Slots 用于 **将应用程序的不同版本部署到同一 A
|
||||
|
||||
## Azure Function Apps
|
||||
|
||||
基本上 **Azure Function 应用是 Azure App Service 的一个子集**,在 Web 控制台中,如果您访问 Web 控制台并列出所有应用服务或在 az cli 中执行 `az webapp list`,您将能够 **看到 Function 应用也列在其中**。
|
||||
基本上 **Azure Function apps 是 Azure App Service 的一个子集**,在 Web 控制台中,如果您访问 Web 控制台并列出所有应用服务或在 az cli 中执行 `az webapp list`,您将能够 **看到 Function apps 也列在其中**。
|
||||
|
||||
因此,这两项服务实际上在 az cli 中大多数 **具有相同的配置、功能和选项**,尽管它们可能以稍微不同的方式配置(例如 appsettings 的默认值或在 Function 应用中使用存储帐户)。
|
||||
因此,这两项服务实际上在 az cli 中大多数 **具有相同的配置、功能和选项**,尽管它们可能以稍微不同的方式配置(例如 appsettings 的默认值或在 Function apps 中使用存储帐户)。
|
||||
|
||||
## Enumeration
|
||||
|
||||
@@ -288,7 +288,7 @@ az webapp up --runtime PYTHON:3.9 --sku B1 --logs
|
||||
> [!TIP]
|
||||
> 仅通过 FTP 连接并修改文件 `output.tar.gz` 并不足以更改 webapp 执行的代码。
|
||||
|
||||
**攻击者可以下载此文件,修改它,然后再次上传以在 webapp 中执行任意代码。**
|
||||
**攻击者可以下载此文件,修改它,然后重新上传以在 webapp 中执行任意代码。**
|
||||
|
||||
### 来自 Github 的 Python
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
<summary>支持 HackTricks</summary>
|
||||
|
||||
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 **上关注我们** [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在 Twitter 上关注** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
|
||||
|
||||
</details>
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
## Azure Cloud Shell
|
||||
|
||||
**Azure Cloud Shell** 是一个交互式、经过身份验证的、可通过浏览器访问的终端,旨在管理 Azure 资源,提供使用 Bash 或 PowerShell 的灵活性。它在一个临时的、每个会话的主机上运行,该主机在 20 分钟不活动后超时,同时在 $HOME 位置使用 5-GB 文件共享持久化文件。可以通过多个点访问 Cloud Shell,包括 Azure 门户、shell.azure.com、Azure CLI 和 PowerShell 文档、Azure 移动应用程序以及 Visual Studio Code Azure 账户扩展。
|
||||
**Azure Cloud Shell** 是一个交互式、经过身份验证的、可通过浏览器访问的终端,旨在管理 Azure 资源,提供使用 Bash 或 PowerShell 的灵活性。它在一个临时的、每个会话的主机上运行,该主机在 20 分钟不活动后超时,同时在 $HOME 位置使用 5-GB 文件共享持久化文件。Cloud Shell 可以通过多个点访问,包括 Azure 门户、shell.azure.com、Azure CLI 和 PowerShell 文档、Azure 移动应用程序以及 Visual Studio Code Azure 账户扩展。
|
||||
|
||||
此服务没有分配权限,因此没有特权升级技术。同时也没有任何类型的枚举。
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
**预安装工具**:Cloud Shell 包含一整套预安装工具,如 Azure CLI、Azure PowerShell、Terraform、Docker CLI、Ansible、Git 以及文本编辑器如 vim、nano 和 emacs。这些工具可以直接使用。要列出已安装的软件包和模块,可以使用 "Get-Module -ListAvailable"、"tdnf list" 和 "pip3 list"。
|
||||
**$HOME 持久性**:首次启动 Azure Cloud Shell 时,可以选择附加存储帐户或不附加。选择不附加存储会创建一个临时会话,文件在会话结束时被删除。要在会话之间持久化文件,请挂载一个存储帐户,该帐户会自动附加为 **$HOME\clouddrive**,您的 **$HOME** 目录将作为 **.img** 文件保存在 Azure 文件共享中。然而,$HOME 之外的文件和机器状态不会被持久化。要安全存储像 SSH 密钥这样的秘密,请使用 Azure Key Vault。
|
||||
**Azure 驱动器 (Azure:)**:Azure Cloud Shell 中的 PowerShell 包含 Azure 驱动器 (Azure:),允许使用类似文件系统的命令轻松导航 Azure 资源,如计算、网络和存储。使用 cd Azure: 切换到 Azure 驱动器,使用 cd ~ 返回到主目录。您仍然可以使用 Azure PowerShell cmdlets 从任何驱动器管理资源。
|
||||
**自定义工具安装**:配置了存储帐户的用户可以安装不需要根权限的额外工具。此功能允许进一步自定义 Cloud Shell 环境,使用户能够根据特定需求调整其设置。
|
||||
**自定义工具安装**:配置了存储帐户的用户可以安装不需要根权限的附加工具。此功能允许进一步自定义 Cloud Shell 环境,使用户能够根据特定需求调整其设置。
|
||||
|
||||
## 参考
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
<summary>支持 HackTricks</summary>
|
||||
|
||||
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 **上关注我们** [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在 Twitter 上关注** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
|
||||
|
||||
</details>
|
||||
|
||||
@@ -9,15 +9,24 @@
|
||||
<summary>支持 HackTricks</summary>
|
||||
|
||||
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 **上关注我们** [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
|
||||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 分享黑客技巧。
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## Azure CosmosDB
|
||||
|
||||
**Azure Cosmos DB** 是一个完全 **托管的 NoSQL、关系型和向量数据库**,提供单毫秒级的响应时间
|
||||
**Azure Cosmos DB** 是一个完全 **托管的 NoSQL、关系型和向量数据库**,提供单毫秒级响应时间、自动扩展和 SLA 支持的可用性,具备企业级安全性。它通过即开即用的多区域数据分发、开源 API、流行语言的 SDK 以及集成向量支持和无缝 Azure AI 集成等 AI 数据库功能,加速应用程序开发。
|
||||
|
||||
Azure Cosmos DB 提供多种数据库 API,以文档、关系、键值、图形和列族数据模型来建模现实世界的数据,这些 API 包括 NoSQL、MongoDB、PostgreSQL、Cassandra、Gremlin 和 Table。
|
||||
|
||||
CosmosDB 的一个关键方面是 Azure Cosmos 账户。**Azure Cosmos 账户** 作为数据库的入口点。该账户决定关键设置,如全球分布、一致性级别和要使用的特定 API,例如 NoSQL。通过该账户,您可以配置全球复制,以确保数据在多个区域可用,以实现低延迟访问。此外,您可以选择在性能和数据准确性之间取得平衡的一致性级别,选项范围从强一致性到最终一致性。
|
||||
|
||||
### NoSQL (sql)
|
||||
Azure Cosmos DB NoSQL API 是一个基于文档的 API,使用 JSON 作为其数据格式。它提供类似 SQL 的查询语法来查询 JSON 对象,使其适合处理结构化和半结构化数据。该服务的端点是:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
https://<Account-Name>.documents.azure.com:443/
|
||||
```
|
||||
@@ -27,7 +36,7 @@ https://<Account-Name>.documents.azure.com:443/
|
||||
在一个帐户内,您可以创建一个或多个数据库,这些数据库作为容器的逻辑分组。数据库充当资源管理和用户权限的边界。数据库可以在其容器之间共享预配的吞吐量,或为单个容器分配专用吞吐量。
|
||||
|
||||
#### 容器
|
||||
数据存储的核心单元是容器,它保存 JSON 文档并自动进行索引以实现高效查询。容器具有弹性可扩展性,并分布在由用户定义的分区键确定的分区中。分区键对于确保最佳性能和均匀数据分布至关重要。例如,一个容器可能存储客户数据,以“customerId”作为分区键。
|
||||
数据存储的核心单元是容器,它保存 JSON 文档并自动进行索引以实现高效查询。容器具有弹性可扩展性,并分布在由用户定义的分区键确定的分区中。分区键对于确保最佳性能和均匀数据分布至关重要。例如,一个容器可能存储客户数据,"customerId" 作为分区键。
|
||||
|
||||
#### 枚举
|
||||
|
||||
@@ -206,7 +215,7 @@ mongodb://<hostname>:<port>/<database>
|
||||
在 MongoDB 中,您可以在一个实例中创建一个或多个数据库。每个数据库作为集合的逻辑分组,并提供资源组织和管理的边界。数据库有助于逻辑上分离和管理数据,例如用于不同的应用程序或项目。
|
||||
|
||||
#### 集合
|
||||
MongoDB 中数据存储的核心单元是集合,它保存文档,并设计用于高效查询和灵活的模式设计。集合具有弹性可扩展性,并可以支持在分布式设置中跨多个节点的高吞吐量操作。
|
||||
MongoDB 中的数据存储核心单元是集合,它保存文档,并设计用于高效查询和灵活的模式设计。集合具有弹性可扩展性,并可以支持在分布式设置中跨多个节点的高吞吐量操作。
|
||||
|
||||
#### 枚举
|
||||
|
||||
@@ -281,7 +290,7 @@ Get-AzCosmosDBMongoDBRoleDefinition -AccountName <account-name> -ResourceGroupNa
|
||||
|
||||
#### 连接
|
||||
|
||||
在这里,您可以通过密钥或在特权提升部分中描述的方法找到密码。
|
||||
在这里,您可以通过密钥或在特权提升部分描述的方法找到密码。
|
||||
{% code overflow="wrap" %}
|
||||
```python
|
||||
from pymongo import MongoClient
|
||||
@@ -353,8 +362,8 @@ print(f"Inserted document with ID: {result.inserted_id}")
|
||||
<summary>支持 HackTricks</summary>
|
||||
|
||||
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)** 上关注我们。**
|
||||
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 分享黑客技巧。
|
||||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 **上关注我们** [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
@@ -11,11 +11,11 @@
|
||||
|
||||
### 不同计划
|
||||
|
||||
- **Flex Consumption Plan**:提供 **动态、事件驱动的扩展**,采用按需付费定价,根据需求添加或删除函数实例。它支持 **虚拟网络** 和 **预配置实例** 以减少冷启动,使其适合 **不需要容器支持的可变工作负载**。
|
||||
- **Traditional Consumption Plan**:默认的无服务器选项,您 **仅在函数运行时支付计算资源费用**。它根据传入事件自动扩展,并包括 **冷启动优化**,但不支持容器部署。适合需要自动扩展的 **间歇性工作负载**。
|
||||
- **Premium Plan**:旨在提供 **一致的性能**,具有 **预热工作者** 以消除冷启动。它提供 **延长的执行时间、虚拟网络**,并支持 **自定义 Linux 镜像**,非常适合需要高性能和高级功能的 **关键任务应用程序**。
|
||||
- **Dedicated Plan**:在专用虚拟机上运行,具有 **可预测的计费**,支持手动或自动扩展。它允许在同一计划上运行多个应用程序,提供 **计算隔离**,并通过应用服务环境确保 **安全网络访问**,非常适合需要一致资源分配的 **长时间运行的应用程序**。
|
||||
- **Container Apps**:允许在受管理的环境中部署 **容器化函数应用**,与微服务和 API 一起使用。它支持自定义库、遗留应用迁移和 **GPU 处理**,消除了 Kubernetes 集群管理。非常适合 **事件驱动、可扩展的容器化应用程序**。
|
||||
- **灵活消费计划**:提供 **动态、事件驱动的扩展**,采用按需付费定价,根据需求添加或删除函数实例。它支持 **虚拟网络** 和 **预配置实例** 以减少冷启动,使其适合 **不需要容器支持的可变工作负载**。
|
||||
- **传统消费计划**:默认的无服务器选项,您 **仅在函数运行时为计算资源付费**。它根据传入事件自动扩展,并包括 **冷启动优化**,但不支持容器部署。适合需要自动扩展的 **间歇性工作负载**。
|
||||
- **高级计划**:旨在提供 **一致的性能**,具有 **预热工作者** 以消除冷启动。它提供 **延长的执行时间、虚拟网络**,并支持 **自定义 Linux 镜像**,非常适合需要高性能和高级功能的 **关键任务应用程序**。
|
||||
- **专用计划**:在专用虚拟机上运行,具有 **可预测的计费**,支持手动或自动扩展。它允许在同一计划上运行多个应用程序,提供 **计算隔离**,并通过应用服务环境确保 **安全网络访问**,非常适合需要一致资源分配的 **长时间运行的应用程序**。
|
||||
- **容器应用**:允许在受管理的环境中部署 **容器化函数应用**,与微服务和 API 一起使用。它支持自定义库、遗留应用迁移和 **GPU 处理**,消除了 Kubernetes 集群管理。非常适合 **事件驱动、可扩展的容器化应用程序**。
|
||||
|
||||
### **存储桶**
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
>
|
||||
> 更多信息请参见 **权限提升部分**。
|
||||
|
||||
还可以在存储帐户的容器 **`azure-webjobs-secrets`** 中找到存储的 **主密钥和函数密钥**,在 **`<app-name>`** 文件夹中的 JSON 文件中可以找到。
|
||||
还可以在存储帐户中找到存储在容器 **`azure-webjobs-secrets`** 中的 **主密钥和函数密钥**,在 **`<app-name>`** 文件夹中的 JSON 文件中可以找到。
|
||||
|
||||
请注意,Functions 还允许将代码存储在远程位置,只需指明其 URL。
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
- 还可以 **授予或限制** 从 **内部网络 (VPC)** 访问 Function App。
|
||||
|
||||
> [!CAUTION]
|
||||
> 从攻击者的角度来看,这非常有趣,因为可能可以从暴露在互联网上的脆弱函数 **转移到内部网络**。
|
||||
> 从攻击者的角度来看,这非常有趣,因为可能可以从暴露于互联网的脆弱函数 **转移到内部网络**。
|
||||
|
||||
### **Function App 设置和环境变量**
|
||||
|
||||
@@ -56,16 +56,16 @@
|
||||
|
||||
### **托管身份和元数据**
|
||||
|
||||
与 [**VMs**](vms/index.html) 一样,Functions 可以具有 **托管身份**,分为两种类型:系统分配和用户分配。
|
||||
与 [**虚拟机**](vms/index.html) 一样,Functions 可以具有 **托管身份**,分为两种类型:系统分配和用户分配。
|
||||
|
||||
**系统分配** 的身份将是一个托管身份,**只有分配了该身份的函数** 可以使用,而 **用户分配** 的托管身份是 **任何其他 Azure 服务都可以使用的托管身份**。
|
||||
|
||||
> [!NOTE]
|
||||
> 与 [**VMs**](vms/index.html) 一样,Functions 可以具有 **1 个系统分配** 的托管身份和 **多个用户分配** 的托管身份,因此如果您妥协了该函数,始终重要的是尝试找到所有托管身份,因为您可能能够从一个函数提升到多个托管身份。
|
||||
> 与 [**虚拟机**](vms/index.html) 一样,Functions 可以具有 **1 个系统分配** 的托管身份和 **多个用户分配** 的托管身份,因此如果您妥协了该函数,始终重要的是尝试找到所有托管身份,因为您可能能够从一个函数提升到多个托管身份。
|
||||
>
|
||||
> 如果未使用系统托管身份,但一个或多个用户托管身份附加到函数,默认情况下您将无法获取任何令牌。
|
||||
|
||||
可以使用 [**PEASS 脚本**](https://github.com/peass-ng/PEASS-ng) 从元数据端点获取默认托管身份的令牌。或者您可以 **手动** 获取它们,如下所述:
|
||||
可以使用 [**PEASS 脚本**](https://github.com/peass-ng/PEASS-ng) 从元数据端点获取默认托管身份的令牌。或者您可以 **手动** 获取,如下所述:
|
||||
|
||||
{% embed url="https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#azure-vm" %}
|
||||
|
||||
@@ -76,17 +76,17 @@
|
||||
> [!NOTE]
|
||||
> 请注意,没有 RBAC 权限可以授予用户调用函数的访问权限。**函数调用取决于创建时选择的触发器**,如果选择了 HTTP 触发器,可能需要使用 **访问密钥**。
|
||||
|
||||
在使用 **HTTP 触发器** 的函数内部创建端点时,可以指明触发函数所需的 **访问密钥授权级别**。提供三种选项:
|
||||
在使用 **HTTP 触发器** 创建函数内部的端点时,可以指明触发函数所需的 **访问密钥授权级别**。提供三种选项:
|
||||
|
||||
- **ANONYMOUS**:**每个人**都可以通过 URL 访问该函数。
|
||||
- **FUNCTION**:仅使用 **函数、主机或主密钥** 的用户可以访问端点。
|
||||
- **ADMIN**:仅使用 **主密钥** 的用户可以访问端点。
|
||||
- **FUNCTION**:端点仅对使用 **函数、主机或主密钥** 的用户可访问。
|
||||
- **ADMIN**:端点仅对使用 **主密钥** 的用户可访问。
|
||||
|
||||
**密钥类型:**
|
||||
|
||||
- **函数密钥**:函数密钥可以是默认的或用户定义的,旨在仅授予对 Function App 中 **特定函数端点** 的访问权限,从而允许对端点进行更细粒度的访问。
|
||||
- **主机密钥**:主机密钥也可以是默认的或用户定义的,提供对 Function App 中 **所有函数端点的访问,具有 FUNCTION 访问级别**。
|
||||
- **主密钥**:主密钥 (`_master`) 作为管理密钥,提供提升的权限,包括访问所有函数端点(包括 ADMIN 访问级别)。此 **密钥无法被撤销**。
|
||||
- **主密钥**:主密钥(`_master`)作为管理密钥,提供提升的权限,包括对所有函数端点的访问(包括 ADMIN 访问级别)。此 **密钥无法被撤销**。
|
||||
- **系统密钥**:系统密钥由 **特定扩展管理**,并且在访问内部组件使用的 webhook 端点时是必需的。示例包括事件网格触发器和可持久化函数,它们利用系统密钥与各自的 API 安全交互。
|
||||
|
||||
> [!TIP]
|
||||
@@ -96,7 +96,7 @@
|
||||
|
||||
### 基本身份验证
|
||||
|
||||
与应用服务一样,Functions 也支持基本身份验证,以通过 Azure 提供的 **用户名和密码的 URL** 连接到 **SCM** 和 **FTP** 部署代码。有关更多信息,请参见:
|
||||
与应用服务一样,Functions 也支持基本身份验证,以通过 **用户名和密码在 URL 中** 连接到 **SCM** 和 **FTP** 部署代码。有关更多信息,请参见:
|
||||
|
||||
{{#ref}}
|
||||
az-app-services.md
|
||||
@@ -104,7 +104,7 @@ az-app-services.md
|
||||
|
||||
### 基于 Github 的部署
|
||||
|
||||
当函数从 Github 仓库生成时,Azure Web 控制台允许在特定仓库中 **自动创建 Github 工作流**,因此每当该仓库更新时,函数的代码也会更新。实际上,Python 函数的 Github Action yaml 看起来是这样的:
|
||||
当函数从 Github 仓库生成时,Azure Web 控制台允许 **在特定仓库中自动创建 Github 工作流**,因此每当该仓库更新时,函数的代码也会更新。实际上,Python 函数的 Github Action yaml 如下所示:
|
||||
|
||||
<details>
|
||||
|
||||
@@ -192,14 +192,14 @@ package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}
|
||||
```
|
||||
</details>
|
||||
|
||||
此外,**托管身份**也会被创建,以便来自存储库的Github Action能够使用它登录到Azure。这是通过在**托管身份**上生成一个联邦凭证来完成的,允许**发行者**`https://token.actions.githubusercontent.com`和**主题标识符**`repo:<org-name>/<repo-name>:ref:refs/heads/<branch-name>`。
|
||||
此外,**托管身份**也会被创建,以便来自仓库的Github Action能够使用它登录到Azure。这是通过在**托管身份**上生成一个联邦凭证来完成的,允许**发行者** `https://token.actions.githubusercontent.com` 和**主题标识符** `repo:<org-name>/<repo-name>:ref:refs/heads/<branch-name>`。
|
||||
|
||||
> [!CAUTION]
|
||||
> 因此,任何妥协该存储库的人都将能够妥协该功能及其附加的托管身份。
|
||||
> 因此,任何妥协该仓库的人都将能够妥协该功能及其附加的托管身份。
|
||||
|
||||
### 基于容器的部署
|
||||
|
||||
并非所有计划都允许部署容器,但对于允许的计划,配置将包含容器的URL。在API中,**`linuxFxVersion`**设置将类似于:`DOCKER|mcr.microsoft.com/...`,而在Web控制台中,配置将显示**镜像设置**。
|
||||
并非所有计划都允许部署容器,但对于允许的计划,配置将包含容器的URL。在API中,**`linuxFxVersion`** 设置将类似于: `DOCKER|mcr.microsoft.com/...`,而在Web控制台中,配置将显示**镜像设置**。
|
||||
|
||||
此外,**不会在与该功能相关的存储**帐户中存储源代码,因为不需要。
|
||||
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
|
||||
## 基本信息
|
||||
|
||||
Azure Logic Apps 是微软 Azure 提供的云服务,使开发人员能够 **创建和运行集成各种服务、数据源和应用程序的工作流**。这些工作流旨在 **自动化业务流程**、协调任务并在不同平台之间执行数据集成。
|
||||
Azure Logic Apps 是微软 Azure 提供的基于云的服务,使开发人员能够 **创建和运行集成各种服务、数据源和应用程序的工作流**。这些工作流旨在 **自动化业务流程**、协调任务,并在不同平台之间执行数据集成。
|
||||
|
||||
Logic Apps 提供了一个可视化设计器,可以使用 **广泛的预构建连接器** 创建工作流,这使得连接和与各种服务(如 Office 365、Dynamics CRM、Salesforce 等)进行交互变得简单。您还可以根据特定需求创建自定义连接器。
|
||||
Logic Apps 提供了一个可视化设计器,可以使用 **广泛的预构建连接器** 创建工作流,这使得连接和与各种服务(如 Office 365、Dynamics CRM、Salesforce 等)进行交互变得简单。您还可以为特定需求创建自定义连接器。
|
||||
|
||||
### 示例
|
||||
|
||||
@@ -25,7 +25,7 @@ Logic Apps 提供了一个可视化设计器,可以使用 **广泛的预构建
|
||||
|
||||
即使您发现 **Logic App 对 SSRF 漏洞**,也无法从元数据中访问凭据,因为 Logic Apps 不允许这样做。
|
||||
|
||||
例如,类似这样的请求将不会返回令牌:
|
||||
例如,像这样的请求将不会返回令牌:
|
||||
```bash
|
||||
# The URL belongs to a Logic App vulenrable to SSRF
|
||||
curl -XPOST 'https://prod-44.westus.logic.azure.com:443/workflows/2d8de4be6e974123adf0b98159966644/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=_8_oqqsCXc0u2c7hNjtSZmT0uM4Xi3hktw6Uze0O34s' -d '{"url": "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/"}' -H "Content-type: application/json" -v
|
||||
@@ -38,8 +38,8 @@ curl -XPOST 'https://prod-44.westus.logic.azure.com:443/workflows/2d8de4be6e9741
|
||||
- **多租户**:提供共享计算资源,运行在公共云中,并遵循按操作计费的定价模型。这非常适合轻量级和具有成本效益的工作负载。
|
||||
* **标准**
|
||||
- **工作流服务计划**:专用计算资源,具有 VNET 集成用于网络,并按工作流服务计划实例收费。适合需要更大控制的更高要求的工作负载。
|
||||
- **应用服务环境 V3** 专用计算资源,具有完全隔离和可扩展性。它还与 VNET 集成用于网络,并使用基于环境中应用服务实例的定价模型。这非常适合需要高隔离的企业级应用程序。
|
||||
- **混合** 设计用于本地处理和多云支持。它允许客户管理的计算资源具有本地网络访问,并利用 Kubernetes 事件驱动的自动扩展(KEDA)。
|
||||
- **应用服务环境 V3** 专用计算资源,具有完全隔离和可扩展性。它还与 VNET 集成用于网络,并使用基于环境内应用服务实例的定价模型。这非常适合需要高隔离的企业级应用程序。
|
||||
- **混合** 旨在本地处理和多云支持。它允许客户管理的计算资源具有本地网络访问,并利用 Kubernetes 事件驱动的自动扩展(KEDA)。
|
||||
|
||||
### 枚举
|
||||
|
||||
@@ -274,15 +274,15 @@ Get-AzIntegrationAccountSchema -ResourceGroupName <resource-group-name> -Integra
|
||||
{% endcontent-ref %}
|
||||
|
||||
{% hint style="success" %}
|
||||
学习和实践 AWS 黑客技术:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
学习和实践 GCP 黑客技术:<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
学习与实践 AWS 黑客技术:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
学习与实践 GCP 黑客技术:<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>支持 HackTricks</summary>
|
||||
|
||||
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
|
||||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **在 Twitter 上关注** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 **上关注我们** [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
|
||||
|
||||
</details>
|
||||
|
||||
@@ -23,9 +23,9 @@ Azure Service Bus 是一个基于云的 **消息服务**,旨在实现 **应用
|
||||
一些高级功能包括:
|
||||
|
||||
- **Message Sessions**: 确保 FIFO 处理并支持请求-响应模式。
|
||||
- **Auto-Forwarding**: 在同一命名空间内在队列或主题之间转移消息。
|
||||
- **Auto-Forwarding**: 在同一命名空间内转移队列或主题之间的消息。
|
||||
- **Dead-Lettering**: 捕获无法送达的消息以供审查。
|
||||
- **Scheduled Delivery**: 延迟消息处理以进行未来任务。
|
||||
- **Scheduled Delivery**: 延迟未来任务的消息处理。
|
||||
- **Message Deferral**: 推迟消息检索直到准备好。
|
||||
- **Transactions**: 将操作分组为原子执行。
|
||||
- **Filters & Actions**: 应用规则以过滤或注释消息。
|
||||
@@ -47,7 +47,7 @@ SAS 策略定义了 Azure Service Bus 实体命名空间(最重要的一个)
|
||||
|
||||
### NameSpace
|
||||
|
||||
sku, authrorization rule,
|
||||
sku, 授权规则,
|
||||
|
||||
### Enumeration
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ Azure Static Web Apps 是一个云服务,用于托管 **来自 GitHub 等代
|
||||
> [!TIP]
|
||||
> 创建静态应用时,您可以选择 **部署授权策略**,包括 **部署令牌** 和 **GitHub Actions 工作流**。
|
||||
|
||||
- **部署令牌**:生成一个令牌,用于验证部署过程。任何拥有 **此令牌的人都足以部署应用的新版本**。每当代码库更新时,**Github Action 会自动在代码库中部署**,并将令牌作为秘密存储,以部署应用的新版本。
|
||||
- **部署令牌**:生成一个令牌,用于验证部署过程。任何拥有 **此令牌的人都可以部署应用的新版本**。每次更新代码库时,**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 完成的。
|
||||
|
||||
@@ -19,7 +19,7 @@ Azure Static Web Apps 是一个云服务,用于托管 **来自 GitHub 等代
|
||||
|
||||
可以 **配置密码** 来访问 Web 应用。Web 控制台允许配置它以保护仅暂存环境或暂存和生产环境。
|
||||
|
||||
这就是在撰写时密码保护的 web 应用的样子:
|
||||
这就是在撰写时,密码保护的 web 应用的样子:
|
||||
|
||||
<figure><img src="../../../images/azure_static_password.png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
@@ -62,7 +62,7 @@ az rest --method GET \
|
||||
}
|
||||
}
|
||||
```
|
||||
注意如何可以通过**角色保护路径**,然后,用户需要对应用进行身份验证并被授予该角色才能访问该路径。还可以**创建邀请**,授予特定用户通过 EntraID、Facebook、GitHub、Google、Twitter 登录的特定角色,这可能对在应用内提升权限很有用。
|
||||
注意如何可以**通过角色保护路径**,然后,用户需要对应用进行身份验证并被授予该角色才能访问该路径。还可以**创建邀请**,通过 EntraID、Facebook、GitHub、Google、Twitter 授予特定用户特定角色,这可能对在应用内提升权限很有用。
|
||||
|
||||
> [!TIP]
|
||||
> 请注意,可以配置应用,使得**对 `staticwebapp.config.json`** 文件的更改不被接受。在这种情况下,仅仅从 Github 更改文件可能不够,还需要**在应用中更改设置**。
|
||||
@@ -71,7 +71,7 @@ az rest --method GET \
|
||||
|
||||
### 托管身份
|
||||
|
||||
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 资源**。
|
||||
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 指南,了解如何在静态应用中使用保管库机密。
|
||||
|
||||
@@ -180,7 +180,7 @@ Get-AzStaticWebAppUserProvidedFunctionApp -ResourceGroupName <ResourceGroupName>
|
||||
../az-privilege-escalation/az-static-web-apps-privesc.md
|
||||
{{#endref}}
|
||||
|
||||
## 参考文献
|
||||
## 参考
|
||||
|
||||
- [https://learn.microsoft.com/en-in/azure/app-service/overview](https://learn.microsoft.com/en-in/azure/app-service/overview)
|
||||
- [https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans](https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans)
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## 基本信息
|
||||
|
||||
**Azure Table Storage** 是一个 NoSQL 键值存储,旨在存储大量结构化的非关系数据。它提供高可用性、低延迟和可扩展性,以有效处理大数据集。数据组织成表格,每个实体通过分区键和行键进行标识,从而实现快速查找。它支持如静态加密、基于角色的访问控制和共享访问签名等功能,适合广泛应用的安全管理存储。
|
||||
**Azure Table Storage** 是一个 NoSQL 键值存储,旨在存储大量结构化的非关系数据。它提供高可用性、低延迟和可扩展性,以高效处理大数据集。数据组织成表格,每个实体通过分区键和行键进行标识,从而实现快速查找。它支持如静态加密、基于角色的访问控制和共享访问签名等功能,适合广泛应用的安全管理存储。
|
||||
|
||||
表存储 **没有内置备份机制**。
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
#### **RowKey**
|
||||
|
||||
- **RowKey 是分区内实体的唯一标识符**。与 PartitionKey 结合使用时,确保表中的每个实体都有一个全局唯一标识符。
|
||||
- **RowKey 是分区内实体的唯一标识符**。与 PartitionKey 结合使用时,确保表中每个实体具有全球唯一标识符。
|
||||
- 示例:对于 `"HR"` 分区,`RowKey` 可能是员工 ID,例如 `"12345"`。
|
||||
|
||||
#### **其他属性(自定义属性)**
|
||||
|
||||
Reference in New Issue
Block a user