NFS no_root_squash/no_all_squash misconfiguration PE
Διαβάστε τον _ /etc/exports _ αρχείο, εάν βρείτε κάποιον κατάλογο που έχει ρυθμιστεί ως no_root_squash, τότε μπορείτε να τον προσπελάσετε από έναν πελάτη και να γράψετε μέσα σε αυτόν τον κατάλογο ως αν ήσασταν ο τοπικός root της μηχανής.
no_root_squash: Αυτή η επιλογή δίνει ουσιαστικά εξουσία στον χρήστη root στον πελάτη να έχει πρόσβαση σε αρχεία στον διακομιστή NFS ως root. Και αυτό μπορεί να οδηγήσει σε σοβαρές προβληματικές ασφαλείας.
no_all_squash: Αυτή είναι παρόμοια με την επιλογή no_root_squash, αλλά ισχύει για μη-ριζικούς χρήστες. Φανταστείτε ότι έχετε ένα κέλυφος ως χρήστης nobody· ελέγξτε το αρχείο /etc/exports· η επιλογή no_all_squash είναι παρούσα· ελέγξτε το αρχείο /etc/passwd· προσομοιώστε έναν μη-ριζικό χρήστη· δημιουργήστε ένα αρχείο suid ως αυτόν τον χρήστη (με τη χρήση του nfs). Εκτελέστε το suid ως χρήστης nobody και γίνετε διαφορετικός χρήστης.
Εξάπλωση Προνομίων
Απομακρυσμένη Εκμετάλλευση
Εάν έχετε βρει αυτήν την ευπάθεια, μπορείτε να την εκμεταλλευτείτε:
Προσαρτήστε αυτόν τον κατάλογο σε μια μηχανή πελάτη και ως root αντιγράψτε μέσα στον προσαρτημένο φάκελο το δυαδικό αρχείο /bin/bash και δώστε του δικαιώματα SUID, και εκτελέστε από τη μηχανή θύματος αυτό το δυαδικό αρχείο bash.
Τοποθετήστε αυτόν τον κατάλογο σε μια μηχανή πελάτη και αντιγράψτε τον ως root μέσα στον τοποθετημένο φάκελο τον μεταγλωττισμένο μας κακόβουλο κώδικα που θα εκμεταλλευτεί την άδεια SUID, θα του δώσει δικαιώματα SUID και θα τον εκτελέσει από τη μηχανή θύμα (μπορείτε να βρείτε εδώ μερικούς C SUID κακόβουλους κώδικες).
Τοπική Εκμετάλλευση
Σημειώστε ότι αν μπορείτε να δημιουργήσετε ένα σωλήνα από τον υπολογιστή σας προς τον υπολογιστή του θύματος, μπορείτε ακόμα να χρησιμοποιήσετε την απομακρυσμένη έκδοση για να εκμεταλλευτείτε αυτήν την ανόδιση προνομίων διαμέσου της διάτρησης των απαιτούμενων θυρών.
Το παρακάτω κόλπο εφαρμόζετε στην περίπτωση που το αρχείο /etc/exports
υποδεικνύει μια διεύθυνση IP. Σε αυτήν την περίπτωση, δεν θα μπορείτε να χρησιμοποιήσετε σε καμία περίπτωση την απομακρυσμένη εκμετάλλευση και θα χρειαστεί να καταχραστείτε αυτό το κόλπο.
Ένα άλλο απαιτούμενο αίτημα για την εκμετάλλευση να λειτουργήσει είναι ότι η εξαγωγή μέσα στο /etc/export
πρέπει να χρησιμοποιεί τη σημαία insecure
.
--Δεν είμαι σίγουρος αν αυτό το κόλπο θα λειτουργήσει αν το /etc/export
υποδεικνύει μια διεύθυνση IP--
Βασικές Πληροφορίες
Το σενάριο περιλαμβάνει την εκμετάλλευση ενός προσαρτημένου κοινόχρηστου καταλόγου NFS σε έναν τοπικό υπολογιστή, εκμεταλλευόμενο ένα σφάλμα στην προδιαγραφή NFSv3 που επιτρέπει στον πελάτη να καθορίσει το uid/gid του, πιθανώς επιτρέποντας μη εξουσιοδοτημένη πρόσβαση. Η εκμετάλλευση περιλαμβάνει τη χρήση της libnfs, μιας βιβλιοθήκης που επιτρέπει την πλαστογράφηση κλήσεων RPC του NFS.
Συγγραφή της Βιβλιοθήκης
Οι ενέργειες συγγραφής της βιβλιοθήκης μπορεί να απαιτούν προσαρμογές βάσει της έκδοσης του πυρήνα. Σε αυτήν τη συγκεκριμένη περίπτωση, οι κλήσεις συστήματος fallocate ήταν σχολιασμένες. Οι ενέργειες συγγραφής της βιβλιοθήκης περιλαμβάνουν τις παρακάτω εντολές:
Εκτέλεση της Εκμετάλλευσης
Η εκμετάλλευση περιλαμβάνει τη δημιουργία ενός απλού προγράμματος C (pwn.c
) που ανεβαίνει τα προνόμια σε root και στη συνέχεια εκτελεί ένα κέλυφος. Το πρόγραμμα μεταγλωττίζεται και το παραγόμενο δυαδικό αρχείο (a.out
) τοποθετείται στο κοινόχρηστο φάκελο με suid root, χρησιμοποιώντας το ld_nfs.so
για να πλαστογραφήσει το uid στις κλήσεις RPC:
Μεταγλωττίστε τον κώδικα εκμετάλλευσης:
Τοποθετήστε την εκμετάλλευση στον κοινόχρηστο φάκελο και τροποποιήστε τα δικαιώματά της πλαστογραφώντας το uid:
Εκτελέστε την εκμετάλλευση για να αποκτήσετε προνόμια root:
Μπόνους: NFShell για Αθόρυβη Πρόσβαση σε Αρχεία
Μόλις αποκτηθεί πρόσβαση root, για να αλληλεπιδράσετε με τον κοινόχρηστο φάκελο NFS χωρίς να αλλάξετε την ιδιοκτησία (για να αποφύγετε την αφή ενδείξεων), χρησιμοποιείται ένα σενάριο Python (nfsh.py). Αυτό το σενάριο προσαρμόζει το uid για να ταιριάζει με αυτό του αρχείου που πρόκειται να αποκτηθεί πρόσβαση, επιτρέποντας την αλληλεπίδραση με αρχεία στον κοινόχρηστο φάκελο χωρίς προβλήματα άδειας:
This will translate the content of the specified file from English to Greek using the DeepL API. Make sure to replace "your_auth_key" with your actual DeepL API authentication key.
Αναφορές
Last updated