5.3 KiB
Κατάχρηση του Docker Socket για Escalation Privileges
{{#include ../../../banners/hacktricks-training.md}}
Υπάρχουν περιπτώσεις όπου έχετε πρόσβαση στο docker socket και θέλετε να το χρησιμοποιήσετε για να ανεβάσετε δικαιώματα. Ορισμένες ενέργειες μπορεί να είναι πολύ ύποπτες και ίσως θελήσετε να τις αποφύγετε, οπότε εδώ μπορείτε να βρείτε διάφορες σημαίες που μπορεί να είναι χρήσιμες για την ανύψωση δικαιωμάτων:
Μέσω mount
Μπορείτε να mount διάφορα μέρη του filesystem σε ένα κοντέινερ που τρέχει ως root και να τα πρόσβαση.
Μπορείτε επίσης να καταχραστείτε ένα mount για να ανεβάσετε δικαιώματα μέσα στο κοντέινερ.
-v /:/host-> Mount το filesystem του host στο κοντέινερ ώστε να μπορείτε να διαβάσετε το filesystem του host.- Αν θέλετε να νιώσετε ότι είστε στον host αλλά να είστε στο κοντέινερ, μπορείτε να απενεργοποιήσετε άλλους μηχανισμούς άμυνας χρησιμοποιώντας σημαίες όπως:
--privileged--cap-add=ALL--security-opt apparmor=unconfined--security-opt seccomp=unconfined-security-opt label:disable--pid=host--userns=host--uts=host--cgroupns=host- **
--device=/dev/sda1 --cap-add=SYS_ADMIN --security-opt apparmor=unconfined** -> Αυτό είναι παρόμοιο με την προηγούμενη μέθοδο, αλλά εδώ mount το δίσκο της συσκευής. Στη συνέχεια, μέσα στο κοντέινερ τρέξτεmount /dev/sda1 /mntκαι μπορείτε να πρόσβαση στο filesystem του host στο/mnt - Τρέξτε
fdisk -lστον host για να βρείτε τη συσκευή</dev/sda1>για να την mount -v /tmp:/host-> Αν για κάποιο λόγο μπορείτε μόνο να mount κάποια κατάλογο από τον host και έχετε πρόσβαση μέσα στον host. Mount το και δημιουργήστε ένα/bin/bashμε suid στον mounted κατάλογο ώστε να μπορείτε να το εκτελέσετε από τον host και να ανεβάσετε σε root.
Note
Σημειώστε ότι ίσως δεν μπορείτε να mount τον φάκελο
/tmpαλλά μπορείτε να mount έναν διαφορετικό εγγράψιμο φάκελο. Μπορείτε να βρείτε εγγράψιμους καταλόγους χρησιμοποιώντας:find / -writable -type d 2>/dev/nullΣημειώστε ότι δεν υποστηρίζουν όλοι οι κατάλογοι σε μια μηχανή linux το suid bit! Για να ελέγξετε ποιες καταλόγους υποστηρίζουν το suid bit, τρέξτε
mount | grep -v "nosuid"Για παράδειγμα, συνήθως οι/dev/shm,/run,/proc,/sys/fs/cgroupκαι/var/lib/lxcfsδεν υποστηρίζουν το suid bit.Σημειώστε επίσης ότι αν μπορείτε να mount
/etcή οποιονδήποτε άλλο φάκελο που περιέχει αρχεία ρυθμίσεων, μπορείτε να τα αλλάξετε από το docker κοντέινερ ως root προκειμένου να τα καταχραστείτε στον host και να ανεβάσετε δικαιώματα (ίσως τροποποιώντας το/etc/shadow)
Διαφυγή από το κοντέινερ
--privileged-> Με αυτή τη σημαία αφαιρείτε όλη την απομόνωση από το κοντέινερ. Ελέγξτε τεχνικές για να διαφύγετε από κοντέινερ με δικαιώματα root.--cap-add=<CAPABILITY/ALL> [--security-opt apparmor=unconfined] [--security-opt seccomp=unconfined] [-security-opt label:disable]-> Για να ανεβάσετε καταχρώντας ικανότητες, δώστε αυτή την ικανότητα στο κοντέινερ και απενεργοποιήστε άλλες μεθόδους προστασίας που μπορεί να εμποδίσουν την εκμετάλλευση να λειτουργήσει.
Curl
Σε αυτή τη σελίδα έχουμε συζητήσει τρόπους για να ανεβάσετε δικαιώματα χρησιμοποιώντας σημαίες docker, μπορείτε να βρείτε τρόπους να καταχραστείτε αυτές τις μεθόδους χρησιμοποιώντας την εντολή curl στη σελίδα:
{{#include ../../../banners/hacktricks-training.md}}