Translated ['src/pentesting-cloud/aws-security/aws-privilege-escalation/

This commit is contained in:
Translator
2025-06-24 14:03:37 +00:00
parent a9df8ac698
commit ce04d1aed3
2 changed files with 48 additions and 51 deletions

View File

@@ -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}}

View File

@@ -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 <username>
```
这是如何安全地授予此权限而不允许访问其他用户的身份:
是如何安全地授予此权限而不允许访问其他用户的身份:
```json
{
"Version": "2012-10-17",
@@ -55,7 +55,7 @@ aws sts get-federation-token --name <username>
```
### `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_name> --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}}