release_agent exploit - Relative Paths to PIDs
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Για περισσότερες λεπτομέρειες ελέγξτε την ανάρτηση του blog από https://ajxchapman.github.io/containers/2020/11/19/privileged-container-escape.html. Αυτό είναι απλώς μια περίληψη:
Η τεχνική περιγράφει μια μέθοδο για την εκτέλεση κώδικα του host από μέσα σε ένα container, ξεπερνώντας τις προκλήσεις που θέτουν οι ρυθμίσεις του storage-driver που θολώνουν τη διαδρομή του filesystem του container στον host, όπως οι Kata Containers ή συγκεκριμένες ρυθμίσεις devicemapper
.
Βασικά βήματα:
Εντοπισμός Ταυτοτήτων Διαδικασιών (PIDs): Χρησιμοποιώντας τον συμβολικό σύνδεσμο /proc/<pid>/root
στο ψευδο-σύστημα αρχείων Linux, οποιοδήποτε αρχείο εντός του container μπορεί να προσπελαστεί σε σχέση με το filesystem του host. Αυτό παρακάμπτει την ανάγκη να γνωρίζουμε τη διαδρομή του filesystem του container στον host.
PID Bashing: Χρησιμοποιείται μια προσέγγιση brute force για να αναζητηθούν PIDs στον host. Αυτό γίνεται ελέγχοντας διαδοχικά την παρουσία ενός συγκεκριμένου αρχείου στο /proc/<pid>/root/<file>
. Όταν βρεθεί το αρχείο, υποδεικνύει ότι η αντίστοιχη PID ανήκει σε μια διαδικασία που εκτελείται μέσα στο στοχευμένο container.
Ενεργοποίηση Εκτέλεσης: Η μαντεμένη διαδρομή PID γράφεται στο αρχείο cgroups release_agent
. Αυτή η ενέργεια ενεργοποιεί την εκτέλεση του release_agent
. Η επιτυχία αυτού του βήματος επιβεβαιώνεται ελέγχοντας τη δημιουργία ενός αρχείου εξόδου.
Η διαδικασία εκμετάλλευσης περιλαμβάνει ένα πιο λεπτομερές σύνολο ενεργειών, με στόχο την εκτέλεση ενός payload στον host μαντεύοντας τη σωστή PID μιας διαδικασίας που εκτελείται μέσα στο container. Να πώς εξελίσσεται:
Αρχικοποίηση Περιβάλλοντος: Ένα script payload (payload.sh
) προετοιμάζεται στον host και δημιουργείται ένας μοναδικός φάκελος για την παρακολούθηση cgroup.
Προετοιμασία Payload: Το script payload, το οποίο περιέχει τις εντολές που θα εκτελούνται στον host, γράφεται και καθίσταται εκτελέσιμο.
Ρύθμιση Cgroup: Το cgroup τοποθετείται και ρυθμίζεται. Η σημαία notify_on_release
ρυθμίζεται για να διασφαλίσει ότι το payload εκτελείται όταν το cgroup απελευθερωθεί.
Brute Force PID: Ένας βρόχος επαναλαμβάνει τις πιθανές PIDs, γράφοντας κάθε μαντεμένη PID στο αρχείο release_agent
. Αυτό ουσιαστικά ορίζει το script payload ως το release_agent
.
Ενεργοποίηση και Έλεγχος Εκτέλεσης: Για κάθε PID, το cgroup.procs
του cgroup γράφεται, ενεργοποιώντας την εκτέλεση του release_agent
αν η PID είναι σωστή. Ο βρόχος συνεχίζεται μέχρι να βρεθεί η έξοδος του script payload, υποδεικνύοντας επιτυχημένη εκτέλεση.
PoC από την ανάρτηση του blog:
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)