Translated ['', 'src/pentesting-cloud/aws-security/aws-privilege-escalat

This commit is contained in:
Translator
2025-10-04 09:19:15 +00:00
parent 1fa1e29c91
commit 858701e88b
2 changed files with 48 additions and 13 deletions

View File

@@ -4,7 +4,7 @@
## Secrets Manager
更多信息请参
更多信息请参
{{#ref}}
../aws-services/aws-secrets-manager-enum.md
@@ -12,14 +12,14 @@
### 读取 Secrets
这些 **secrets 本身是敏感信息**[查看 privesc 页面](../aws-privilege-escalation/aws-secrets-manager-privesc.md) 了解如何读取它们。
这些 **secrets 本身是敏感信息**[查看 privesc 页面](../aws-privilege-escalation/aws-secrets-manager-privesc.md) 了解如何读取它们。
### DoS 更改 Secret 值
更改 secret 的值可能会导致所有依赖该值的系统 **DoS**
更改 secret 的值可能会所有依赖该值的系统造成 **DoS**
> [!WARNING]
> 请注意,先前的值也会被存储,因此很容易回滚到之前的值。
> 请注意,先前的值也会被存储,因此可以很容易地恢复到之前的值。
```bash
# Requires permission secretsmanager:PutSecretValue
aws secretsmanager put-secret-value \
@@ -28,11 +28,11 @@ aws secretsmanager put-secret-value \
```
### DoS Change KMS key
如果攻击者具有 secretsmanager:UpdateSecret 权限,他们可以将 secret 配置为使用攻击者拥有的 KMS key。该 key 最初被设置为任何人都可以访问和使用,因此可以使用该新 key 更新 secret。如果该 key 无法访问,则无法更新 secret。
如果 attacker 拥有 secretsmanager:UpdateSecret 权限,可以将 secret 配置为使用由 attacker 拥有的 KMS key。该 key 最初被设置为任何人都可以访问和使用,因此可以使用该新 key 更新 secret。如果该 key 无法访问,则无法更新 secret。
在更改 secret 使用的 key 之后,攻击者会修改他们的 key 的配置使只有他们自己可以访问。这样secret 的后续版本将使用新 key 加密,由于无法访问该 key就无法检索这些 secret。
在更改 secret 的 key 之后,attacker 会修改其 key 的配置,使只有他们自己可以访问。这样,之后的 secret 版本将使用新 key 加密,由于无法访问该 key就无法检索 secret。
需要注意的是,这种不可访问性只会出现在后续版本(在 secret 内容更改之后),因为当前版本仍然使用原来的 KMS key 加密。
需要注意的是,这种不可访问性只会发生在后续版本(在 secret 内容更改之后),因为当前版本仍然使用原来的 KMS key 加密。
```bash
aws secretsmanager update-secret \
--secret-id MyTestSecret \
@@ -40,10 +40,42 @@ aws secretsmanager update-secret \
```
### DoS Deleting Secret
删除一个 secret 的最短天数为 7 天
删除 secret 的最短天数为 7 天
```bash
aws secretsmanager delete-secret \
--secret-id MyTestSecret \
--recovery-window-in-days 7
```
## secretsmanager:RestoreSecret
可以恢复一个 secret这允许恢复已计划删除的 secret因为 secrets 的最短删除期限为 7 天,最长为 30 天。再加上 secretsmanager:GetSecretValue 权限,就可以检索它们的内容。
要恢复正在被删除的 secret您可以使用以下命令
```bash
aws secretsmanager restore-secret \
--secret-id <Secret_Name>
```
## secretsmanager:DeleteResourcePolicy
此操作允许删除控制谁可以访问 secret 的 resource policy。如果该 resource policy 被配置为允许特定用户集访问,则可能导致 DoS。
要删除 resource policy
```bash
aws secretsmanager delete-resource-policy \
--secret-id <Secret_Name>
```
## secretsmanager:UpdateSecretVersionStage
一个 secret 的状态用于管理 secret 的不同版本。AWSCURRENT 标记应用程序使用的活动版本AWSPREVIOUS 保留前一个版本以便在必要时回滚,而 AWSPENDING 在轮换过程中用于准备并验证新版本,在将其设为当前版本之前使用。
应用程序总是读取标有 AWSCURRENT 的版本。如果有人把该标签移动到错误的版本,应用将使用无效的凭据并可能失败。
AWSPREVIOUS 不会被自动使用。然而,如果 AWSCURRENT 被移除或错误地重新分配,可能会看起来一切仍在使用前一个版本运行。
```bash
aws secretsmanager update-secret-version-stage \
--secret-id <your-secret-name-or-arn> \
--version-stage AWSCURRENT \
--move-to-version-id <target-version-id> \
--remove-from-version-id <previous-version-id>
```
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -4,7 +4,7 @@
## Secrets Manager
有关 Secrets Manager 的更多信息,请查看:
有关 secrets manager 的更多信息,请查看:
{{#ref}}
../aws-services/aws-secrets-manager-enum.md
@@ -12,21 +12,24 @@
### `secretsmanager:GetSecretValue`
有此权限的攻击者可以获取 AWS **Secretsmanager****秘密内保存的值**
有此权限的攻击者可以 AWS **Secretsmanager**获取 **secret 内已保存的值**
```bash
aws secretsmanager get-secret-value --secret-id <secret_name> # Get value
```
**潜在影响:** 访问 AWS Secrets Manager 服务中的高度敏感数据。
**潜在影响:** 访问 AWS secrets manager service 中的高度敏感数据。
> [!WARNING]
> 请注意,即使具有 `secretsmanager:BatchGetSecretValue` 权限,攻击者仍然需要 `secretsmanager:GetSecretValue` 才能检索这些敏感的 secret。
### `secretsmanager:GetResourcePolicy`, `secretsmanager:PutResourcePolicy`, (`secretsmanager:ListSecrets`)
通过之前的权限,可以**授予其他主体/账户(甚至外部)**访问**秘密**的权限。请注意,为了**读取使用 KMS 密钥加密的秘密**,用户还需要对**KMS 密钥**具有**访问权限**(更多信息请参见 [KMS Enum page](../aws-services/aws-kms-enum.md))。
在具备上述权限的情况下,可以**将访问权限授予其他主体/账户(甚至外部)**访问**secret**注意,为了**读取使用 KMS key 加密的 secrets**,用户还需要对 **KMS key** 具有访问权限(更多信息见 [KMS Enum page](../aws-services/aws-kms-enum.md))。
```bash
aws secretsmanager list-secrets
aws secretsmanager get-resource-policy --secret-id <secret_name>
aws secretsmanager put-resource-policy --secret-id <secret_name> --resource-policy file:///tmp/policy.json
```
policy.json:
请粘贴 policy.json 的内容,我会把其中可翻译的英文说明翻译成中文(保留代码、文件名、路径和标签不翻译)。
```json
{
"Version": "2012-10-17",