Client Side Prototype Pollution
Ανακάλυψη χρησιμοποιώντας αυτόματα εργαλεία
Τα εργαλεία https://github.com/dwisiswant0/ppfuzz, https://github.com/kleiton0x00/ppmap και https://github.com/kosmosec/proto-find μπορούν να χρησιμοποιηθούν για να βρεθούν ευπάθειες προσβολής του πρωτοκόλλου.
Επιπλέον, μπορείτε επίσης να χρησιμοποιήσετε την επέκταση προγράμματος περιήγησης PPScan για να σαρώσετε αυτόματα τις σελίδες που αποκτάτε πρόσβαση για ευπάθειες προσβολής του πρωτοκόλλου.
Αποσφαλμάτωση όπου χρησιμοποιείται μια ιδιότητα
Εύρεση της ρίζας του προβλήματος της Prototype Pollution
Μόλις έχει εντοπιστεί μια ευπάθεια της Prototype Pollution από οποιοδήποτε εργαλείο και αν ο κώδικας δεν είναι υπερβολικά πολύπλοκος, μπορείτε να βρείτε την ευπάθεια αναζητώντας λέξεις-κλειδιά όπως location.hash
, decodeURIComponent
ή location.search
στα Chrome Developer Tools. Αυτή η προσέγγιση σας επιτρέπει να εντοπίσετε το ευπάθεια τμήμα του κώδικα JavaScript.
Για μεγαλύτερους και πιο πολύπλοκους κώδικες, ένας απλός τρόπος για να ανακαλύψετε τον ευπάθη κώδικα περιλαμβάνει τα εξής βήματα:
Χρησιμοποιήστε ένα εργαλείο για να εντοπίσετε μια ευπάθεια και να λάβετε ένα payload που έχει σχεδιαστεί για να ορίσει μια ιδιότητα στον constructor. Ένα παράδειγμα που παρέχεται από το ppmap μπορεί να φαίνεται ως εξής:
constructor[prototype][ppmap]=reserved
.Ορίστε ένα σημείο διακοπής στην πρώτη γραμμή του κώδικα JavaScript που θα εκτελεστεί στη σελίδα. Ανανεώστε τη σελίδα με το payload, διακόπτοντας την εκτέλεση σε αυτό το σημείο διακοπής.
Ενώ η εκτέλεση του JavaScript είναι διακοπτόμενη, εκτελέστε τον παρακάτω κώδικα στην κονσόλα του JS. Αυτός ο κώδικας θα ενημερώσει όταν δημιουργηθεί η ιδιότητα 'ppmap', βοηθώντας στον εντοπισμό της προέλευσής της:
Πλοηγηθείτε πίσω στην καρτέλα Πηγές και επιλέξτε "Συνέχιση εκτέλεσης σεναρίου". Το JavaScript θα συνεχίσει να εκτελείται και η ιδιότητα 'ppmap' θα μολυνθεί όπως αναμένεται. Χρησιμοποιώντας το κομμάτι κώδικα που παρέχεται, διευκολύνεται η εντοπισμός της ακριβούς τοποθεσίας όπου μολύνεται η ιδιότητα 'ppmap'. Εξετάζοντας τη Στοίβα Κλήσεων, μπορούν να παρατηρηθούν διάφορες στοίβες όπου έχει συμβεί η μόλυνση.
Όταν αποφασίζετε ποια στοίβα να εξετάσετε, συχνά είναι χρήσιμο να επικεντρωθείτε σε στοίβες που σχετίζονται με αρχεία βιβλιοθήκης JavaScript, καθώς η προσβολή του πρωτοτύπου συμβαίνει συχνά μέσα σε αυτές τις βιβλιοθήκες. Εντοπίστε τη σχετική στοίβα εξετάζοντας τη σύνδεσή της με τα αρχεία βιβλιοθήκης (ορατά στη δεξιά πλευρά, παρόμοια με μια εικόνα που παρέχεται για καθοδήγηση). Σε περιπτώσεις με πολλαπλές στοίβες, όπως αυτές στις γραμμές 4 και 6, η λογική επιλογή είναι η στοίβα στη γραμμή 4, καθώς αντιπροσωπεύει την αρχική εμφάνιση της μόλυνσης και, επομένως, τη ρίζα του προβλήματος ασφαλείας. Κάνοντας κλικ στη στοίβα θα σας κατευθύνει στο ευάλωτο κώδικα.
Εύρεση Εργαλείων Σεναρίου
Το εργαλείο είναι ο κώδικας που θα καταχραστείτε μόλις ανακαλυφθεί μια ευπάθεια PP.
Εάν η εφαρμογή είναι απλή, μπορούμε να αναζητήσουμε λέξεις-κλειδιά όπως srcdoc/innerHTML/iframe/createElement
και να εξετάσουμε τον πηγαίο κώδικα και να ελέγξουμε αν οδηγεί σε εκτέλεση κώδικα JavaScript. Μερικές φορές, οι αναφερόμενες τεχνικές ενδέχεται να μην βρίσκουν καθόλου εργαλεία. Σε αυτήν την περίπτωση, η αναθεώρηση του πηγαίου κώδικα αποκαλύπτει κάποια ενδιαφέροντα εργαλεία, όπως στο παρακάτω παράδειγμα.
Παράδειγμα εύρεσης εργαλείου PP στον κώδικα της βιβλιοθήκης Mithil
Ελέγξτε αυτήν την ανάρτηση: https://blog.huli.tw/2022/05/02/en/intigriti-revenge-challenge-author-writeup/
Επανασυγκρότηση φορτίων για ευπάθεις βιβλιοθήκες
Παράκαμψη HTML Sanitizers μέσω PP
Αυτή η έρευνα δείχνει εργαλεία PP που χρησιμοποιούνται για παράκαμψη των απολυμάνσεων που παρέχονται από ορισμένες βιβλιοθήκες απολύμανσης HTML:
sanitize-html
dompurify
Closure
Αναφορές
Last updated