LFI2RCE Via temp file uploads
Last updated
Last updated
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ελέγξτε τις πλήρεις λεπτομέρειες αυτής της τεχνικής στο https://gynvael.coldwind.pl/download.php?f=PHP_LFI_rfc1867_temporary_files.pdf
Όταν μια μηχανή PHP λαμβάνει ένα POST αίτημα που περιέχει αρχεία διαμορφωμένα σύμφωνα με το RFC 1867, δημιουργεί προσωρινά αρχεία για να αποθηκεύσει τα ανεβασμένα δεδομένα. Αυτά τα αρχεία είναι κρίσιμα για την επεξεργασία ανεβάσματος αρχείων σε σενάρια PHP. Η συνάρτηση move_uploaded_file
πρέπει να χρησιμοποιηθεί για να μετακινήσει αυτά τα προσωρινά αρχεία σε μια επιθυμητή τοποθεσία αν απαιτείται μόνιμη αποθήκευση πέρα από την εκτέλεση του σεναρίου. Μετά την εκτέλεση, η PHP διαγράφει αυτόματα τυχόν υπόλοιπα προσωρινά αρχεία.
Ειδοποίηση Ασφαλείας: Οι επιτιθέμενοι, γνωρίζοντας την τοποθεσία των προσωρινών αρχείων, μπορεί να εκμεταλλευτούν μια ευπάθεια Local File Inclusion για να εκτελέσουν κώδικα αποκτώντας πρόσβαση στο αρχείο κατά τη διάρκεια του ανεβάσματος.
Η πρόκληση για μη εξουσιοδοτημένη πρόσβαση έγκειται στην πρόβλεψη του ονόματος του προσωρινού αρχείου, το οποίο είναι σκόπιμα τυχαίο.
Εκμετάλλευση σε Συστήματα Windows
Στα Windows, η PHP δημιουργεί ονόματα προσωρινών αρχείων χρησιμοποιώντας τη συνάρτηση GetTempFileName
, με αποτέλεσμα ένα μοτίβο όπως <path>\<pre><uuuu>.TMP
. Σημαντικά:
Η προεπιλεγμένη διαδρομή είναι συνήθως C:\Windows\Temp
.
Το πρόθεμα είναι συνήθως "php".
Το <uuuu>
αντιπροσωπεύει μια μοναδική δεκαεξαδική τιμή. Σημαντικά, λόγω του περιορισμού της συνάρτησης, χρησιμοποιούνται μόνο τα κατώτερα 16 bits, επιτρέποντας μέγιστο 65,535 μοναδικά ονόματα με σταθερή διαδρομή και πρόθεμα, καθιστώντας εφικτό το brute force.
Επιπλέον, η διαδικασία εκμετάλλευσης απλοποιείται στα συστήματα Windows. Μια ιδιαιτερότητα στη συνάρτηση FindFirstFile
επιτρέπει τη χρήση wildcard σε διαδρομές Local File Inclusion (LFI). Αυτό επιτρέπει τη δημιουργία μιας διαδρομής include όπως η παρακάτω για να εντοπιστεί το προσωρινό αρχείο:
Σε ορισμένες περιπτώσεις, μπορεί να απαιτείται μια πιο συγκεκριμένη μάσκα (όπως php1<<
ή phpA<<
). Κάποιος μπορεί να δοκιμάσει συστηματικά αυτές τις μάσκες για να ανακαλύψει το ανεβασμένο προσωρινό αρχείο.
Εκμετάλλευση σε Συστήματα GNU/Linux
Για τα συστήματα GNU/Linux, η τυχαιότητα στην ονοματολογία των προσωρινών αρχείων είναι ισχυρή, καθιστώντας τα ονόματα ούτε προβλέψιμα ούτε επιρρεπή σε επιθέσεις brute force. Περαιτέρω λεπτομέρειες μπορούν να βρεθούν στην αναφερόμενη τεκμηρίωση.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)