phar:// deserialization
Τα αρχεία Phar (PHP Archive) περιέχουν μεταδεδομένα σε μορφή σειριοποίησης, οπότε, όταν αναλυθούν, αυτά τα μεταδεδομένα αποσειριοποιούνται και μπορείτε να προσπαθήσετε να εκμεταλλευτείτε μια ευπάθεια αποσειριοποίησης μέσα στον κώδικα PHP.
Το καλύτερο πράγμα σχετικά με αυτό το χαρακτηριστικό είναι ότι αυτή η αποσειριοποίηση θα συμβεί ακόμα και όταν χρησιμοποιούνται συναρτήσεις PHP που δεν αξιολογούν κώδικα PHP όπως file_get_contents(), fopen(), file() ή file_exists(), md5_file(), filemtime() ή filesize().
Έτσι, φανταστείτε μια κατάσταση όπου μπορείτε να κάνετε ένα PHP web να λάβει το μέγεθος ενός αυθαίρετου αρχείου χρησιμοποιώντας το πρωτόκολλο phar://
, και μέσα στον κώδικα βρίσκετε μια κλάση παρόμοια με την παρακάτω:
Μπορείτε να δημιουργήσετε ένα αρχείο phar που όταν φορτωθεί θα καταχραστεί αυτή την κλάση για να εκτελέσει αυθαίρετες εντολές με κάτι σαν:
Σημειώστε πως τα μαγικά bytes του JPG (\xff\xd8\xff
) προστίθενται στην αρχή του αρχείου phar για να αποφευχθούν πιθανοί περιορισμοί αποστολής αρχείων.
Συντάξτε το αρχείο test.phar
με:
Και εκτελέστε την εντολή whoami
καταχρώμενοι το ευάλωτο κώδικα με:
Αναφορές
Συμβουλή για bug bounty: Εγγραφείτε στο Intigriti, μια προηγμένη πλατφόρμα bug bounty που δημιουργήθηκε από χάκερς, για χάκερς! Γίνετε μέλος στο https://go.intigriti.com/hacktricks σήμερα και αρχίστε να κερδίζετε αμοιβές έως και $100,000!
Last updated