From 0c17489b04a8e78964b6dade4f3ef71f342b8171 Mon Sep 17 00:00:00 2001 From: Translator Date: Thu, 20 Feb 2025 00:54:25 +0000 Subject: [PATCH] Translated ['src/pentesting-cloud/azure-security/az-persistence/az-queue --- src/SUMMARY.md | 5 ++-- .../az-persistence/az-queue-persistance.md | 2 +- .../az-persistence/az-sql-persistance.md | 20 +++++++++++++ .../az-queue-post-exploitation.md | 4 +-- .../az-servicebus-post-exploitation.md | 8 ++--- .../az-queue-privesc.md | 4 +-- .../az-servicebus-privesc.md | 29 +++++++++++-------- .../{az-queue-enum.md => az-queue.md} | 0 ...az-servicebus-enum.md => az-servicebus.md} | 21 +++++++------- .../azure-security/az-services/az-sql.md | 22 +++++++++----- 10 files changed, 74 insertions(+), 41 deletions(-) create mode 100644 src/pentesting-cloud/azure-security/az-persistence/az-sql-persistance.md rename src/pentesting-cloud/azure-security/az-services/{az-queue-enum.md => az-queue.md} (100%) rename src/pentesting-cloud/azure-security/az-services/{az-servicebus-enum.md => az-servicebus.md} (88%) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 227605b06..11d60f589 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -425,8 +425,8 @@ - [Az - Management Groups, Subscriptions & Resource Groups](pentesting-cloud/azure-security/az-services/az-management-groups-subscriptions-and-resource-groups.md) - [Az - MySQL](pentesting-cloud/azure-security/az-services/az-mysql.md) - [Az - PostgreSQL](pentesting-cloud/azure-security/az-services/az-postgresql.md) - - [Az - Queue Storage](pentesting-cloud/azure-security/az-services/az-queue-enum.md) - - [Az - Service Bus](pentesting-cloud/azure-security/az-services/az-servicebus-enum.md) + - [Az - Queue Storage](pentesting-cloud/azure-security/az-services/az-queue.md) + - [Az - Service Bus](pentesting-cloud/azure-security/az-services/az-servicebus.md) - [Az - SQL](pentesting-cloud/azure-security/az-services/az-sql.md) - [Az - Static Web Applications](pentesting-cloud/azure-security/az-services/az-static-web-apps.md) - [Az - Storage Accounts & Blobs](pentesting-cloud/azure-security/az-services/az-storage.md) @@ -489,6 +489,7 @@ - [Az - Persistence](pentesting-cloud/azure-security/az-persistence/README.md) - [Az - Automation Accounts Persistence](pentesting-cloud/azure-security/az-persistence/az-automation-accounts-persistence.md) - [Az - Cloud Shell Persistence](pentesting-cloud/azure-security/az-persistence/az-cloud-shell-persistence.md) + - [Az - Queue SQL Persistence](pentesting-cloud/azure-security/az-persistence/az-sql-persistance.md) - [Az - Queue Storage Persistence](pentesting-cloud/azure-security/az-persistence/az-queue-persistance.md) - [Az - VMs Persistence](pentesting-cloud/azure-security/az-persistence/az-vms-persistence.md) - [Az - Storage Persistence](pentesting-cloud/azure-security/az-persistence/az-storage-persistence.md) diff --git a/src/pentesting-cloud/azure-security/az-persistence/az-queue-persistance.md b/src/pentesting-cloud/azure-security/az-persistence/az-queue-persistance.md index b4f36c63d..fda56c39b 100644 --- a/src/pentesting-cloud/azure-security/az-persistence/az-queue-persistance.md +++ b/src/pentesting-cloud/azure-security/az-persistence/az-queue-persistance.md @@ -7,7 +7,7 @@ 有关更多信息,请查看: {{#ref}} -../az-services/az-queue-enum.md +../az-services/az-queue.md {{#endref}} ### 操作: `Microsoft.Storage/storageAccounts/queueServices/queues/write` diff --git a/src/pentesting-cloud/azure-security/az-persistence/az-sql-persistance.md b/src/pentesting-cloud/azure-security/az-persistence/az-sql-persistance.md new file mode 100644 index 000000000..0804e074e --- /dev/null +++ b/src/pentesting-cloud/azure-security/az-persistence/az-sql-persistance.md @@ -0,0 +1,20 @@ +# Az - SQL Persistence + +{{#include ../../../banners/hacktricks-training.md}} + +## SQL + +有关更多信息,请查看: + +{{#ref}} +../az-services/az-sql.md +{{#endref}} + +### 常见持久性技术 + +- 破坏 SQL 凭据或创建 SQL 用户(如有需要,启用 SQL 身份验证) +- 将被破坏的用户分配为 Entrad ID 管理员(如有需要,启用 Entra ID 身份验证) +- 在 VM 中设置后门(如果使用 SQL VM) +- 创建防火墙规则以保持对 SQL 数据库的访问 + +{{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-queue-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-queue-post-exploitation.md index 523c13edb..3077b45d8 100644 --- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-queue-post-exploitation.md +++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-queue-post-exploitation.md @@ -7,7 +7,7 @@ 有关更多信息,请查看: {{#ref}} -../az-services/az-queue-enum.md +../az-services/az-queue.md {{#endref}} ### DataActions: `Microsoft.Storage/storageAccounts/queueServices/queues/messages/read` @@ -26,7 +26,7 @@ az storage message get --queue-name --account-name --content "Injected malicious message" --account-name ``` diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-servicebus-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-servicebus-post-exploitation.md index a47109209..70c329ed3 100644 --- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-servicebus-post-exploitation.md +++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-servicebus-post-exploitation.md @@ -7,18 +7,18 @@ 有关更多信息,请查看: {{#ref}} -../az-services/az-servicebus-enum.md +../az-services/az-servicebus.md {{#endref}} ### Actions: `Microsoft.ServiceBus/namespaces/Delete` -拥有此权限的攻击者可以删除整个 Azure Service Bus 命名空间。此操作会删除命名空间及所有相关资源,包括队列、主题、订阅及其消息,导致所有依赖系统和工作流的广泛中断和永久数据丢失。 +具有此权限的攻击者可以删除整个 Azure Service Bus 命名空间。此操作会删除命名空间及所有相关资源,包括队列、主题、订阅及其消息,导致所有依赖系统和工作流的广泛中断和永久数据丢失。 ```bash az servicebus namespace delete --resource-group --name ``` ### Actions: `Microsoft.ServiceBus/namespaces/topics/Delete` -拥有此权限的攻击者可以删除 Azure Service Bus 主题。此操作会删除主题及其所有相关的订阅和消息,可能导致关键数据丢失,并干扰依赖该主题的系统和工作流程。 +拥有此权限的攻击者可以删除 Azure Service Bus 主题。此操作会删除主题及其所有相关的订阅和消息,可能导致关键数据丢失,并干扰依赖于该主题的系统和工作流程。 ```bash az servicebus topic delete --resource-group --namespace-name --name ``` @@ -50,7 +50,7 @@ az servicebus topic update --resource-group --namespace-name ``` ### Actions: `Microsoft.ServiceBus/namespaces/topics/subscriptions/write` (`Microsoft.ServiceBus/namespaces/topics/subscriptions/read`) -拥有创建或修改订阅权限的攻击者(要修改订阅,您还需要 Action: `Microsoft.ServiceBus/namespaces/topics/subscriptions/read`)可以利用这一点在 Azure Service Bus 主题中拦截、重定向或干扰消息工作流。使用诸如 az servicebus topic subscription update 的命令,他们可以操纵配置,例如启用死信以转移消息,将消息转发到未经授权的端点,或修改 TTL 和锁定持续时间以保留或干扰消息传递。此外,他们可以更改状态或最大交付计数设置,以干扰操作或逃避检测,使订阅控制成为后期利用场景中的关键方面。 +拥有创建或修改订阅权限的攻击者(要修改订阅,您还需要操作:`Microsoft.ServiceBus/namespaces/topics/subscriptions/read`)可以利用这一点在 Azure Service Bus 主题中拦截、重定向或干扰消息工作流。使用诸如 az servicebus topic subscription update 的命令,他们可以操控配置,例如启用死信以转移消息,将消息转发到未经授权的端点,或修改 TTL 和锁定持续时间以保留或干扰消息传递。此外,他们可以更改状态或最大交付计数设置,以干扰操作或逃避检测,使订阅控制成为后期利用场景中的关键方面。 ```bash az servicebus topic subscription create --resource-group --namespace-name --topic-name --name az servicebus topic subscription update --resource-group --namespace-name --topic-name --name diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-queue-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-queue-privesc.md index 107c55ab9..069a49e6d 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-queue-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-queue-privesc.md @@ -7,12 +7,12 @@ 有关更多信息,请查看: {{#ref}} -../az-services/az-queue-enum.md +../az-services/az-queue.md {{#endref}} ### DataActions: `Microsoft.Storage/storageAccounts/queueServices/queues/messages/read` -具有此权限的攻击者可以从 Azure 存储队列中查看消息。这使攻击者能够查看消息的内容,而不将其标记为已处理或更改其状态。这可能导致对敏感信息的未经授权访问,从而使数据外泄或收集进一步攻击的情报。 +拥有此权限的攻击者可以从 Azure 存储队列中查看消息。这使攻击者能够查看消息的内容,而不将其标记为已处理或更改其状态。这可能导致对敏感信息的未经授权访问,从而使数据外泄或收集进一步攻击的情报。 ```bash az storage message peek --queue-name --account-name ``` diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md index b3f99d1ad..19312e2bf 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md @@ -7,14 +7,14 @@ 有关更多信息,请查看: {{#ref}} -../az-services/az-servicebus-enum.md +../az-services/az-servicebus.md {{#endref}} ### Microsoft.ServiceBus/namespaces/authorizationrules/listKeys/action 或 Microsoft.ServiceBus/namespaces/authorizationrules/regenerateKeys/action -这些权限允许您获取或重新生成 Service Bus 命名空间内本地授权规则的密钥。使用这些密钥可以作为 Service Bus 命名空间进行身份验证,使您能够向任何队列或主题发送消息,从任何队列或订阅接收消息,或可能以可能干扰操作、冒充有效用户或将恶意数据注入消息工作流的方式与系统进行交互。 +这些权限允许您获取或重新生成 Service Bus 命名空间内本地授权规则的密钥。使用这些密钥可以作为 Service Bus 命名空间进行身份验证,使您能够向任何队列或主题发送消息,从任何队列或订阅接收消息,或可能以可能干扰操作、冒充有效用户或向消息工作流注入恶意数据的方式与系统进行交互。 -请注意,默认情况下 **`RootManageSharedAccessKey` 规则对 Service Bus 命名空间具有完全控制权**,并且它被 `az` cli 使用,但可能存在其他具有其他密钥值的规则。 +请注意,默认情况下,**`RootManageSharedAccessKey` 规则对 Service Bus 命名空间具有完全控制权**,并且它被 `az` cli 使用,但可能存在其他具有其他密钥值的规则。 ```bash # List keys az servicebus namespace authorization-rule keys list --resource-group --namespace-name --authorization-rule-name RootManageSharedAccessKey [--authorization-rule-name RootManageSharedAccessKey] @@ -57,7 +57,7 @@ az servicebus queue authorization-rule keys renew --key [PrimaryKey|SecondaryKey ``` ### Microsoft.ServiceBus/namespaces/[queues|topics]/authorizationRules/write -拥有此权限,可以**创建一个新的授权规则**,并赋予所有权限及其自己的密钥: +拥有此权限可以**创建一个新的授权规则**,并赋予所有权限及其自己的密钥: ```bash # In a topic az servicebus topic authorization-rule create --resource-group --namespace-name --topic-name --name --rights Manage Listen Send @@ -68,7 +68,7 @@ az servicebus queue authorization-rule create --resource-group --nam >[!WARNING] >此命令不会返回密钥,因此您需要通过之前的命令(和权限)获取它们,以便提升权限。 -此外,通过该命令(和 `Microsoft.ServiceBus/namespaces/[queues|topics]/authorizationRules/read`),如果您通过 Azure CLI 执行此操作,可以使用以下命令更新现有的授权规则并赋予更多权限(如果缺少某些权限): +此外,通过该命令(和 `Microsoft.ServiceBus/namespaces/[queues|topics]/authorizationRules/read`),如果您通过 Azure CLI 执行此操作,可以使用以下命令更新现有的授权规则并赋予其更多权限(如果缺少某些权限): ```bash # In a topic az servicebus topic authorization-rule update --resource-group --namespace-name --topic-name --name --rights Manage Listen Send @@ -78,17 +78,18 @@ az servicebus queue authorization-rule update --resource-group --nam ``` ### Microsoft.ServiceBus/namespaces/write (& Microsoft.ServiceBus/namespaces/read if az cli is used) -拥有这些权限**攻击者可以通过以下命令重新启用“本地身份验证”**,因此所有来自共享策略的密钥将有效。 +拥有这些权限 **攻击者可以通过以下命令重新启用“本地身份验证”**,因此所有来自共享策略的密钥将有效。 ```bash az servicebus namespace update --disable-local-auth false -n --resource-group ``` -### 发送带有密钥的消息 (Microsoft.ServiceBus/namespaces/authorizationRules/listkeys/action OR Microsoft.ServiceBus/namespaces/authorizationRules/regenerateKeys/action) +### 发送带有密钥的消息 (Microsoft.ServiceBus/namespaces/[queues|topics]/authorizationRules/ListKeys/action 或 Microsoft.ServiceBus/namespaces/[queues|topics]/authorizationRules/regenerateKeys/action) -您可以检索 `PrimaryConnectionString`,它作为 Service Bus 命名空间的凭据。使用此连接字符串,您可以完全以 Service Bus 命名空间的身份进行身份验证,使您能够向任何队列或主题发送消息,并可能以可能干扰操作、冒充有效用户或将恶意数据注入消息工作流的方式与系统交互。如果将 `--disable-local-auth` 设置为 false,则此方法有效。 +您可以检索 `PrimaryConnectionString`,它作为 Service Bus 命名空间的凭据。使用此连接字符串,您可以完全以 Service Bus 命名空间的身份进行身份验证,使您能够向任何队列或主题发送消息,并可能以可能干扰操作、冒充有效用户或向消息工作流注入恶意数据的方式与系统进行交互。此方法在 `--disable-local-auth` 设置为 false(即启用本地身份验证)时有效。 ```python import asyncio from azure.servicebus.aio import ServiceBusClient from azure.servicebus import ServiceBusMessage +# pip install azure-servicebus NAMESPACE_CONNECTION_STR = "" TOPIC_OR_QUEUE_NAME = "" @@ -101,7 +102,7 @@ print("Sent message") asyncio.run(send_message()) ``` -此外,您可以使用 az rest 发送消息,在这种情况下,您需要生成一个 sas 令牌以供使用。 +此外,您可以使用 az rest 发送消息,在这种情况下,您需要生成一个 sas 令牌来使用。 ```python import time, urllib.parse, hmac, hashlib, base64 @@ -129,12 +130,13 @@ az rest --method post \ --body "" ``` -### Receive with keys (Microsoft.ServiceBus/namespaces/authorizationRules/listkeys/action OR Microsoft.ServiceBus/namespaces/authorizationRules/regenerateKeys/action) +### Receive with keys (Microsoft.ServiceBus/namespaces/[queues|topics]/authorizationRules/ListKeys/action OR Microsoft.ServiceBus/namespaces/[queues|topics]/authorizationRules/regenerateKeys/action) 您可以检索 PrimaryConnectionString,它作为 Service Bus 命名空间的凭据。使用此连接字符串,您可以从命名空间内的任何队列或订阅接收消息,从而访问潜在的敏感或关键数据,启用数据外泄,或干扰消息处理和应用程序工作流。如果将 `--disable-local-auth` 设置为 false,此方法有效。 ```python import asyncio from azure.servicebus.aio import ServiceBusClient +# pip install azure-servicebus CONN_STR = "" QUEUE = "" @@ -162,7 +164,7 @@ await receiver.complete_message(msg) asyncio.run(receive()) print("Done receiving messages") ``` -此外,您可以使用 az rest 发送消息,在这种情况下,您需要生成一个 sas 令牌以供使用。 +此外,您可以使用 az rest 发送消息,在这种情况下,您需要生成一个 sas 令牌来使用。 ```python import time, urllib.parse, hmac, hashlib, base64 @@ -224,13 +226,15 @@ import asyncio from azure.identity.aio import DefaultAzureCredential from azure.servicebus.aio import ServiceBusClient from azure.servicebus import ServiceBusMessage +# pip install azure-servicebus NS = ".servicebus.windows.net" # Your namespace -QUEUE_OR_TOPIC = "" # Your queue name +QUEUE_OR_TOPIC = "" # Your queue name async def run(): credential = DefaultAzureCredential() async with ServiceBusClient(fully_qualified_namespace=NS, credential=credential) as client: +#async with client.get_topic_sender(topic_name=TOPIC) as sender: # Use this to send the message to a topic async with client.get_queue_sender(queue_name=QUEUE) as sender: await sender.send_messages(ServiceBusMessage("Single Message")) print("Sent a single message") @@ -246,6 +250,7 @@ asyncio.run(run()) import asyncio from azure.identity.aio import DefaultAzureCredential from azure.servicebus.aio import ServiceBusClient +# pip install azure-servicebus NS = ".servicebus.windows.net" QUEUE = "" diff --git a/src/pentesting-cloud/azure-security/az-services/az-queue-enum.md b/src/pentesting-cloud/azure-security/az-services/az-queue.md similarity index 100% rename from src/pentesting-cloud/azure-security/az-services/az-queue-enum.md rename to src/pentesting-cloud/azure-security/az-services/az-queue.md diff --git a/src/pentesting-cloud/azure-security/az-services/az-servicebus-enum.md b/src/pentesting-cloud/azure-security/az-services/az-servicebus.md similarity index 88% rename from src/pentesting-cloud/azure-security/az-services/az-servicebus-enum.md rename to src/pentesting-cloud/azure-security/az-services/az-servicebus.md index 19c0037ce..fd9d67c21 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-servicebus-enum.md +++ b/src/pentesting-cloud/azure-security/az-services/az-servicebus.md @@ -14,7 +14,7 @@ Azure Service Bus 是一个基于云的 **消息服务**,旨在实现 **应用 - 以拉取模式(按需检索)交付给一个消费者。 - 可以配置为在消息共享时自动删除,或在“Peek lock”模式下,消费者需要确认可以删除。如果没有确认,消息将返回队列。 - 支持点对点通信。 -3. **Topics:** 发布-订阅消息用于广播。 +3. **Topics:** 发布-订阅消息,用于广播。 - 多个独立的订阅接收消息的副本。 - 每个订阅就像主题内部的一个队列。 - 订阅可以有规则/过滤器来控制交付或添加元数据。 @@ -35,29 +35,29 @@ https://.servicebus.windows.net:443/ - **事务**:将操作分组为原子执行。 - **过滤器和操作**:应用规则以过滤或注释消息。 - **空闲自动删除**:在不活动后删除队列(最小:5分钟)。 -- **重复检测**:在重发期间移除重复消息。 +- **重复检测**:在重发期间删除重复消息。 - **批量删除**:批量删除过期或不必要的消息。 ### 本地身份验证 -**`--disable-local-auth`** az cli 参数用于控制是否为您的 Service Bus 命名空间启用 **本地身份验证**(允许使用共享访问签名(SAS)密钥)。 +az cli参数中的 **`--disable-local-auth`** 用于控制是否为您的Service Bus命名空间启用 **本地身份验证**(允许使用共享访问签名(SAS)密钥)。 -- 当 disable 设置为 **true**:禁用使用 SAS 密钥的本地身份验证,允许使用 Entra ID 身份验证。 -- 当 disable 设置为 **false(默认)**:同时提供 SAS 本地身份验证和 Entra ID 身份验证,您可以使用包含 SAS 密钥的连接字符串访问您的 Service Bus 资源。 +- 当disable设置为 **true**:禁用使用SAS密钥的本地身份验证,允许使用Entra ID身份验证。 +- 当disable设置为 **false(默认)**:同时提供SAS本地身份验证和Entra ID身份验证,您可以使用包含SAS密钥的连接字符串访问您的Service Bus资源。 -### 授权规则 / SAS 策略 +### 授权规则 / SAS策略 -SAS 策略定义了 Azure Service Bus 实体命名空间(最重要的一个)、队列和主题的访问权限。每个策略具有以下组件: +SAS策略定义了Azure Service Bus实体命名空间(最重要的一个)、队列和主题的访问权限。每个策略具有以下组件: - **权限**:复选框以指定访问级别: - 管理:授予对实体的完全控制,包括配置和权限管理。 - 发送:允许向实体发送消息。 - 监听:允许从实体接收消息。 -- **主密钥和次密钥**:这些是用于生成安全令牌以进行身份验证访问的加密密钥。 +- **主密钥和次密钥**:这些是用于生成安全令牌以进行身份验证的加密密钥。 - **主连接字符串和次连接字符串**:预配置的连接字符串,包括端点和密钥,便于在应用程序中使用。 -- **SAS 策略 ARM ID**:用于程序识别的策略的 Azure 资源管理器(ARM)路径。 +- **SAS策略ARM ID**:用于程序识别的Azure资源管理器(ARM)路径。 -需要注意的是,一个命名空间只有一个 SAS 策略,这会影响其中的每个实体,而队列和主题可以拥有各自的单独 SAS 策略,以便进行更细粒度的控制。 +需要注意的是,一个命名空间只有一个SAS策略,这会影响其中的每个实体,而队列和主题可以拥有各自的SAS策略以实现更细粒度的控制。 ### 枚举 @@ -143,6 +143,7 @@ Get-AzServiceBusTopic -ResourceGroupName -NamespaceName .database.windows.net -U -P