mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-06 09:43:42 -08:00
Translated ['src/pentesting-cloud/aws-security/aws-privilege-escalation/
This commit is contained in:
@@ -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}}
|
||||
@@ -30,8 +30,8 @@ aws sts assume-role --role-arn $ROLE_ARN --role-session-name sessionname
|
||||
**潜在的な影響:** 役割への権限昇格。
|
||||
|
||||
> [!CAUTION]
|
||||
> この場合、権限 `sts:AssumeRole` は **悪用する役割に示される必要があり**、攻撃者に属するポリシーには示されないことに注意してください。\
|
||||
> 一つの例外を除いて、**異なるアカウントから役割を引き受けるためには**、攻撃者アカウントもその役割に対して **`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
|
||||
@@ -78,11 +78,11 @@ aws sts get-federation-token --name <username>
|
||||
]
|
||||
}
|
||||
```
|
||||
ロールを偽装するための資格情報を生成するには、一般的に次のようなものを使用できます:
|
||||
一般的に、ロールを偽装するための資格情報を生成するには、次のようなものを使用できます:
|
||||
```bash
|
||||
aws sts assume-role-with-saml --role-arn <value> --principal-arn <value>
|
||||
```
|
||||
しかし、**プロバイダー**は、これを簡単にするための**独自のツール**を持っているかもしれません。例えば、[onelogin-aws-assume-role](https://github.com/onelogin/onelogin-python-aws-assume-role):
|
||||
しかし、**プロバイダー**は、[onelogin-aws-assume-role](https://github.com/onelogin/onelogin-python-aws-assume-role)のように、これを簡単にするための**独自のツール**を持っているかもしれません。
|
||||
```bash
|
||||
onelogin-aws-assume-role --onelogin-subdomain mettle --onelogin-app-id 283740 --aws-region eu-west-1 -z 3600
|
||||
```
|
||||
@@ -90,17 +90,56 @@ onelogin-aws-assume-role --onelogin-subdomain mettle --onelogin-app-id 283740 --
|
||||
|
||||
### `sts:AssumeRoleWithWebIdentity`
|
||||
|
||||
この権限は、**モバイル、ウェブアプリケーション、EKS...** でウェブアイデンティティプロバイダーを使用して認証されたユーザーのために、一連の一時的なセキュリティ資格情報を取得する権限を付与します。[Learn more here.](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)
|
||||
この権限は、**モバイル、ウェブアプリケーション、EKS...** でウェブアイデンティティプロバイダーによって認証されたユーザーのために、一連の一時的なセキュリティ資格情報を取得する権限を付与します。[詳細はこちら。](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)
|
||||
|
||||
例えば、**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
|
||||
```
|
||||
### フェデレーションの悪用
|
||||
### Federation Abuse
|
||||
|
||||
{{#ref}}
|
||||
../aws-basic-information/aws-federation-abuse.md
|
||||
{{#endref}}
|
||||
|
||||
### IAM Roles Anywhere Privesc
|
||||
|
||||
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"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
```
|
||||
プライベートエスカレーションには、https://docs.aws.amazon.com/rolesanywhere/latest/userguide/credential-helper.html からの `aws_signing_helper` が必要です。
|
||||
|
||||
次に、有効な証明書を使用して、攻撃者はより高い権限のロールにピボットできます。
|
||||
```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}}
|
||||
|
||||
Reference in New Issue
Block a user