AWS - ECS Privesc
Last updated
Last updated
Learn & practice AWS Hacking: Learn & practice GCP Hacking:
Περισσότερες πληροφορίες σχετικά με το ECS στο:
iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:RunTask
Ένας επιτιθέμενος που εκμεταλλεύεται την άδεια iam:PassRole
, ecs:RegisterTaskDefinition
και ecs:RunTask
στο ECS μπορεί να δημιουργήσει έναν νέο ορισμό εργασίας με ένα κακόβουλο κοντέινερ που κλέβει τα διαπιστευτήρια μεταδεδομένων και να το εκτελέσει.
Πιθανές Επιπτώσεις: Άμεσο privesc σε διαφορετικό ρόλο ECS.
iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:StartTask
Ακριβώς όπως στο προηγούμενο παράδειγμα, ένας επιτιθέμενος που εκμεταλλεύεται τα δικαιώματα iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:StartTask
στο ECS μπορεί να δημιουργήσει έναν νέο ορισμό εργασίας με ένα κακόβουλο κοντέινερ που κλέβει τα διαπιστευτήρια μεταδεδομένων και να το εκτελέσει.
Ωστόσο, σε αυτή την περίπτωση, χρειάζεται να υπάρχει μια παρουσία κοντέινερ για να εκτελέσει τον κακόβουλο ορισμό εργασίας.
Πιθανές Επιπτώσεις: Άμεσο privesc σε οποιονδήποτε ρόλο ECS.
iam:PassRole
, ecs:RegisterTaskDefinition
, (ecs:UpdateService|ecs:CreateService)
Ακριβώς όπως στο προηγούμενο παράδειγμα, ένας επιτιθέμενος που εκμεταλλεύεται τα δικαιώματα iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:UpdateService
ή ecs:CreateService
στο ECS μπορεί να δημιουργήσει μια νέα ορισμό εργασίας με ένα κακόβουλο κοντέινερ που κλέβει τα διαπιστευτήρια μεταδεδομένων και να το εκτελέσει δημιουργώντας μια νέα υπηρεσία με τουλάχιστον 1 εργασία σε εκτέλεση.
Πιθανές Επιπτώσεις: Άμεσο privesc σε οποιοδήποτε ρόλο ECS.
iam:PassRole
, (ecs:UpdateService|ecs:CreateService)
Στην πραγματικότητα, μόνο με αυτές τις άδειες είναι δυνατόν να χρησιμοποιηθούν παρακάμψεις για την εκτέλεση αυθαίρετων εντολών σε ένα κοντέινερ με έναν αυθαίρετο ρόλο με κάτι σαν:
Πιθανές Επιπτώσεις: Άμεσο privesc σε οποιοδήποτε ρόλο ECS.
ecs:RegisterTaskDefinition
, (ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)
Αυτή η επίθεση είναι δυνατή μόνο αν ο ECS cluster χρησιμοποιεί EC2 instances και όχι Fargate.
ecs:ExecuteCommand
, ecs:DescribeTasks,
(ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)
Ένας επιτιθέμενος με το ecs:ExecuteCommand
, ecs:DescribeTasks
μπορεί να εκτελέσει εντολές μέσα σε ένα τρέχον κοντέινερ και να εξάγει τον IAM ρόλο που είναι συνημμένος σε αυτό (χρειάζεστε τις άδειες περιγραφής γιατί είναι απαραίτητο να εκτελέσετε το aws ecs execute-command
).
Ωστόσο, για να το κάνετε αυτό, η κοντέινερ πρέπει να εκτελεί τον ExecuteCommand agent (ο οποίος από προεπιλογή δεν είναι).
Επομένως, ο επιτιθέμενος θα μπορούσε να προσπαθήσει να:
Προσπαθήσει να εκτελέσει μια εντολή σε κάθε τρέχον κοντέινερ
Αν έχει ecs:RunTask
, εκτελέστε μια εργασία με aws ecs run-task --enable-execute-command [...]
Αν έχει ecs:StartTask
, εκτελέστε μια εργασία με aws ecs start-task --enable-execute-command [...]
Αν έχει ecs:CreateService
, δημιουργήστε μια υπηρεσία με aws ecs create-service --enable-execute-command [...]
Αν έχει ecs:UpdateService
, ενημερώστε μια υπηρεσία με aws ecs update-service --enable-execute-command [...]
Μπορείτε να βρείτε παραδείγματα αυτών των επιλογών στις προηγούμενες ενότητες privesc ECS.
Πιθανές Επιπτώσεις: Privesc σε διαφορετικό ρόλο που συνδέεται με τα κοντέινερ.
ssm:StartSession
Ελέγξτε στη σελίδα privesc ssm πώς μπορείτε να εκμεταλλευτείτε αυτή την άδεια για privesc σε ECS:
iam:PassRole
, ec2:RunInstances
Ελέγξτε στη σελίδα privesc ec2 πώς μπορείτε να εκμεταλλευτείτε αυτές τις άδειες για privesc σε ECS:
?ecs:RegisterContainerInstance
TODO: Είναι δυνατόν να καταχωρήσετε μια παρουσία από διαφορετικό λογαριασμό AWS ώστε οι εργασίες να εκτελούνται σε μηχανές που ελέγχονται από τον επιτιθέμενο;;
ecs:CreateTaskSet
, ecs:UpdateServicePrimaryTaskSet
, ecs:DescribeTaskSets
TODO: Δοκιμάστε αυτό
Ένας επιτιθέμενος με τις άδειες ecs:CreateTaskSet
, ecs:UpdateServicePrimaryTaskSet
, και ecs:DescribeTaskSets
μπορεί να δημιουργήσει ένα κακόβουλο σύνολο εργασιών για μια υπάρχουσα υπηρεσία ECS και να ενημερώσει το κύριο σύνολο εργασιών. Αυτό επιτρέπει στον επιτιθέμενο να εκτελεί αυθαίρετο κώδικα εντός της υπηρεσίας.
Πιθανές Επιπτώσεις: Εκτέλεση αυθαίρετου κώδικα στην επηρεαζόμενη υπηρεσία, ενδεχομένως επηρεάζοντας τη λειτουργικότητά της ή εξάγοντας ευαίσθητα δεδομένα.
Αυτό το σενάριο είναι παρόμοιο με τα προηγούμενα αλλά χωρίς την άδεια iam:PassRole
.
Αυτό είναι ακόμα ενδιαφέρον γιατί αν μπορείτε να εκτελέσετε ένα αυθαίρετο κοντέινερ, ακόμα και αν είναι χωρίς ρόλο, θα μπορούσατε να εκτελέσετε ένα προνομιακό κοντέινερ για να διαφύγετε στο κόμβο και να κλέψετε τον ρόλο IAM EC2 και τους άλλους ρόλους κοντέινερ ECS που εκτελούνται στον κόμβο.
Θα μπορούσατε ακόμα να αναγκάσετε άλλες εργασίες να εκτελούνται μέσα στην EC2 instance που έχετε παραβιάσει για να κλέψετε τα διαπιστευτήριά τους (όπως συζητήθηκε στην ).
Μάθετε & εξασκηθείτε στο AWS Hacking: Μάθετε & εξασκηθείτε στο GCP Hacking:
Ελέγξτε τα !
Εγγραφείτε στην 💬 ή στην ή ακολουθήστε μας στο Twitter 🐦 .
Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα και github repos.