ld.so privesc exploit example
Προετοιμάστε το περιβάλλον
In the following section you can find the code of the files we are going to use to prepare the environment
Δημιουργήστε αυτά τα αρχεία στον υπολογιστή σας στον ίδιο φάκελο
Συγκεντρώστε τη βιβλιοθήκη:
gcc -shared -o libcustom.so -fPIC libcustom.c
Αντιγράψτε
libcustom.so
στο/usr/lib
:sudo cp libcustom.so /usr/lib
(δικαιώματα root)Συγκεντρώστε το εκτελέσιμο:
gcc sharedvuln.c -o sharedvuln -lcustom
Ελέγξτε το περιβάλλον
Ελέγξτε ότι το libcustom.so φορτώνεται από το /usr/lib και ότι μπορείτε να εκτελέσετε το δυαδικό.
Exploit
Σε αυτό το σενάριο θα υποθέσουμε ότι κάποιος έχει δημιουργήσει μια ευάλωτη είσοδο μέσα σε ένα αρχείο στο /etc/ld.so.conf/:
Ο ευάλωτος φάκελος είναι /home/ubuntu/lib (όπου έχουμε δικαίωμα εγγραφής). Κατεβάστε και μεταγλωττίστε τον παρακάτω κώδικα μέσα σε αυτήν την διαδρομή:
Τώρα που έχουμε δημιουργήσει τη κακόβουλη βιβλιοθήκη libcustom μέσα στο κακώς ρυθμισμένο μονοπάτι, πρέπει να περιμένουμε για μια επανεκκίνηση ή για τον χρήστη root να εκτελέσει ldconfig
(σε περίπτωση που μπορείτε να εκτελέσετε αυτό το δυαδικό αρχείο ως sudo ή έχει το suid bit θα μπορείτε να το εκτελέσετε μόνοι σας).
Μόλις συμβεί αυτό ελέγξτε ξανά από πού φορτώνει το εκτελέσιμο sharevuln
τη βιβλιοθήκη libcustom.so
:
Όπως μπορείτε να δείτε, το φορτώνει από το /home/ubuntu/lib
και αν οποιοσδήποτε χρήστης το εκτελέσει, θα εκτελεστεί ένα shell:
Σημειώστε ότι σε αυτό το παράδειγμα δεν έχουμε κλιμακώσει τα δικαιώματα, αλλά τροποποιώντας τις εντολές που εκτελούνται και περιμένοντας τον root ή άλλο χρήστη με προνόμια να εκτελέσει το ευάλωτο δυαδικό αρχείο θα μπορέσουμε να κλιμακώσουμε τα δικαιώματα.
Άλλες κακές ρυθμίσεις - Ίδια ευπάθεια
Στο προηγούμενο παράδειγμα προσποιηθήκαμε μια κακή ρύθμιση όπου ένας διαχειριστής έθεσε έναν μη προνομιούχο φάκελο μέσα σε ένα αρχείο ρύθμισης μέσα στο /etc/ld.so.conf.d/
.
Αλλά υπάρχουν και άλλες κακές ρυθμίσεις που μπορούν να προκαλέσουν την ίδια ευπάθεια, αν έχετε δικαιώματα εγγραφής σε κάποιο αρχείο ρύθμισης μέσα στο /etc/ld.so.conf.d
, στον φάκελο /etc/ld.so.conf.d
ή στο αρχείο /etc/ld.so.conf
μπορείτε να ρυθμίσετε την ίδια ευπάθεια και να την εκμεταλλευτείτε.
Εκμετάλλευση 2
Υποθέστε ότι έχετε δικαιώματα sudo πάνω στο ldconfig
.
Μπορείτε να υποδείξετε στο ldconfig
από πού να φορτώσει τα αρχεία ρύθμισης, οπότε μπορούμε να εκμεταλλευτούμε αυτό για να κάνουμε το ldconfig
να φορτώσει αυθαίρετους φακέλους.
Έτσι, ας δημιουργήσουμε τα αρχεία και τους φακέλους που χρειάζονται για να φορτώσουμε το "/tmp":
Τώρα, όπως υποδεικνύεται στην προηγούμενη εκμετάλλευση, δημιουργήστε τη κακόβουλη βιβλιοθήκη μέσα στο /tmp
.
Και τέλος, ας φορτώσουμε τη διαδρομή και να ελέγξουμε από πού φορτώνει τη βιβλιοθήκη το δυαδικό αρχείο:
Όπως μπορείτε να δείτε, έχοντας δικαιώματα sudo πάνω στο ldconfig
μπορείτε να εκμεταλλευτείτε την ίδια ευπάθεια.
Last updated