From ce04d1aed3c2e2690c17a48ff95e3d78e2d95fd6 Mon Sep 17 00:00:00 2001 From: Translator Date: Tue, 24 Jun 2025 14:03:37 +0000 Subject: [PATCH] Translated ['src/pentesting-cloud/aws-security/aws-privilege-escalation/ --- .../aws-iam-roles-anywhere-privesc.md | 42 -------------- .../aws-sts-privesc.md | 57 ++++++++++++++++--- 2 files changed, 48 insertions(+), 51 deletions(-) delete mode 100644 src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-roles-anywhere-privesc.md diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-roles-anywhere-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-roles-anywhere-privesc.md deleted file mode 100644 index 500995d21..000000000 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-roles-anywhere-privesc.md +++ /dev/null @@ -1,42 +0,0 @@ -# AWS - IAM Roles Anywhere Privesc - -{{#include ../../../../banners/hacktricks-training.md}} - -AWS IAM RolesAnywhere 允许 AWS 以外的工作负载使用 X.509 证书承担 IAM 角色。但是,当信任策略没有正确限制时,它们可能会被滥用以进行权限提升。 - -此策略缺乏对允许的信任锚或证书属性的限制。因此,任何与账户中的任何信任锚相关的证书都可以用来承担此角色。 -```json -{ -"Version": "2012-10-17", -"Statement": [ -{ -"Effect": "Allow", -"Principal": { -"Service": "rolesanywhere.amazonaws.com" -}, -"Action": [ -"sts:AssumeRole", -"sts:SetSourceIdentity", -"sts:TagSession" -] -} -] -} - -``` -要进行权限提升,`aws_signing_helper` 是必需的,来自 https://docs.aws.amazon.com/rolesanywhere/latest/userguide/credential-helper.html - -然后,使用有效的证书,攻击者可以转向更高权限的角色。 -```bash -aws_signing_helper credential-process \ ---certificate readonly.pem \ ---private-key readonly.key \ ---trust-anchor-arn arn:aws:rolesanywhere:us-east-1:123456789012:trust-anchor/ta-id \ ---profile-arn arn:aws:rolesanywhere:us-east-1:123456789012:profile/default \ ---role-arn arn:aws:iam::123456789012:role/Admin -``` -### 参考 - -- https://www.ruse.tech/blogs/aws-roles-anywhere-privilege-escalation/ - -{{#include ../../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sts-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sts-privesc.md index a82e620d3..bab744822 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sts-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sts-privesc.md @@ -6,9 +6,9 @@ ### `sts:AssumeRole` -每个角色都创建了一个 **角色信任策略**,该策略指示 **谁可以假设创建的角色**。如果来自 **同一账户** 的角色表示某个账户可以假设它,这意味着该账户将能够访问该角色(并可能进行 **privesc**)。 +每个角色都是通过**角色信任策略**创建的,该策略指示**谁可以假设创建的角色**。如果来自**同一账户**的角色表示某个账户可以假设它,这意味着该账户将能够访问该角色(并可能进行**权限提升**)。 -例如,以下角色信任策略指示任何人都可以假设它,因此 **任何用户都将能够 privesc** 到与该角色相关的权限。 +例如,以下角色信任策略指示任何人都可以假设它,因此**任何用户都将能够进行权限提升**到与该角色相关的权限。 ```json { "Version": "2012-10-17", @@ -23,15 +23,15 @@ ] } ``` -您可以模拟一个角色运行: +您可以模拟一个正在运行的角色: ```bash aws sts assume-role --role-arn $ROLE_ARN --role-session-name sessionname ``` -**潜在影响:** 提权到角色。 +**潜在影响:** 提权到该角色。 > [!CAUTION] > 请注意,在这种情况下,权限 `sts:AssumeRole` 需要在 **被滥用的角色中指明**,而不是在攻击者的策略中。\ -> 除此之外,为了 **从不同账户假设角色**,攻击者账户 **也需要** 对该角色拥有 **`sts:AssumeRole`** 权限。 +> 除此之外,为了 **从不同账户假设角色**,攻击者账户 **还需要** 对该角色拥有 **`sts:AssumeRole`** 权限。 ### **`sts:GetFederationToken`** @@ -39,7 +39,7 @@ aws sts assume-role --role-arn $ROLE_ARN --role-session-name sessionname ```bash aws sts get-federation-token --name ``` -这是如何安全地授予此权限而不允许访问其他用户的身份: +这就是如何安全地授予此权限而不允许访问其他用户的身份: ```json { "Version": "2012-10-17", @@ -55,7 +55,7 @@ aws sts get-federation-token --name ``` ### `sts:AssumeRoleWithSAML` -带有此角色的信任策略授予**通过 SAML 认证的用户模拟该角色的权限。** +一个包含此角色的信任策略授予**通过 SAML 认证的用户模拟该角色的权限。** 具有此权限的信任策略示例如下: ```json @@ -90,9 +90,9 @@ onelogin-aws-assume-role --onelogin-subdomain mettle --onelogin-app-id 283740 -- ### `sts:AssumeRoleWithWebIdentity` -此权限允许为**已在移动、Web 应用程序、EKS...中经过身份验证的用户**获取一组临时安全凭证,使用一个 Web 身份提供者。[在这里了解更多。](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) +此权限允许为**已在移动、Web 应用程序、EKS...中经过身份验证的用户**获取一组临时安全凭证,使用网络身份提供者。[在这里了解更多。](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) -例如,如果一个**EKS 服务账户**应该能够**模拟一个 IAM 角色**,它将在**`/var/run/secrets/eks.amazonaws.com/serviceaccount/token`**中拥有一个令牌,并且可以通过执行类似的操作**假设角色并获取凭证**: +例如,如果**EKS 服务账户**应该能够**模拟 IAM 角色**,它将在**`/var/run/secrets/eks.amazonaws.com/serviceaccount/token`**中拥有一个令牌,并可以**假设该角色并获取凭证**,执行类似以下操作: ```bash aws sts assume-role-with-web-identity --role-arn arn:aws:iam::123456789098:role/ --role-session-name something --web-identity-token file:///var/run/secrets/eks.amazonaws.com/serviceaccount/token # The role name can be found in the metadata of the configuration of the pod @@ -103,4 +103,43 @@ aws sts assume-role-with-web-identity --role-arn arn:aws:iam::123456789098:role/ ../aws-basic-information/aws-federation-abuse.md {{#endref}} +### IAM Roles Anywhere 权限提升 + +AWS IAM RolesAnywhere 允许 AWS 以外的工作负载使用 X.509 证书来承担 IAM 角色。但是,当信任策略没有正确范围时,它们可能会被滥用以进行权限提升。 + +该策略缺乏对允许的信任锚或证书属性的限制。因此,任何与账户中的任何信任锚相关的证书都可以用来承担此角色。 +```json +{ +"Version": "2012-10-17", +"Statement": [ +{ +"Effect": "Allow", +"Principal": { +"Service": "rolesanywhere.amazonaws.com" +}, +"Action": [ +"sts:AssumeRole", +"sts:SetSourceIdentity", +"sts:TagSession" +] +} +] +} + +``` +要进行权限提升,`aws_signing_helper` 是必需的,来自 https://docs.aws.amazon.com/rolesanywhere/latest/userguide/credential-helper.html + +然后,使用有效的证书,攻击者可以转向更高权限的角色。 +```bash +aws_signing_helper credential-process \ +--certificate readonly.pem \ +--private-key readonly.key \ +--trust-anchor-arn arn:aws:rolesanywhere:us-east-1:123456789012:trust-anchor/ta-id \ +--profile-arn arn:aws:rolesanywhere:us-east-1:123456789012:profile/default \ +--role-arn arn:aws:iam::123456789012:role/Admin +``` +### 参考 + +- [https://www.ruse.tech/blogs/aws-roles-anywhere-privilege-escalation](https://www.ruse.tech/blogs/aws-roles-anywhere-privilege-escalation) + {{#include ../../../banners/hacktricks-training.md}}