mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-02-05 03:16:37 -08:00
Translated ['', 'src/pentesting-cloud/aws-security/aws-privilege-escalat
This commit is contained in:
@@ -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}}
|
||||
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user