Express Prototype Pollution Gadgets
WhiteIntel είναι μια μηχανή αναζήτησης που τροφοδοτείται από το dark web και προσφέρει δωρεάν λειτουργίες για να ελέγξετε αν μια εταιρεία ή οι πελάτες της έχουν διαρρεύσει από κλέφτες κακόβουλου λογισμικού.
Ο κύριος στόχος του WhiteIntel είναι η καταπολέμηση των αναλήψεων λογαριασμών και των επιθέσεων ransomware που προκύπτουν από κακόβουλο λογισμικό που κλέβει πληροφορίες.
Μπορείτε να ελέγξετε τον ιστότοπό τους και να δοκιμάσετε τη μηχανή τους δωρεάν στο:
Εξυπηρέτηση απαντήσεων XSS
Για περισσότερες λεπτομέρειες ανατρέξτε στην αρχική έρευνα
Αλλαγή του τύπου περιεχομένου JSON σε HTML
Σε μια εφαρμογή Express που χρησιμοποιεί μια απάντηση τύπου περιεχομένου JSON και αντανακλά ένα JSON:
Σε αυτές τις περιπτώσεις το XSS συνήθως δεν είναι δυνατό με έναν τύπο περιεχομένου JSON. Ωστόσο, με τη χρήση της πρωτοτύπου μόλυνσης μπορούμε να μπερδέψουμε το Express ώστε να εξυπηρετήσει μια απάντηση HTML. Αυτή η ευπάθεια βασίζεται στην εφαρμογή που χρησιμοποιεί res.send(obj)
και χρησιμοποιεί τον body parser με τον τύπο περιεχομένου application/json.
Με το ρύπανση
των ιδιοτήτων body
και _body
, είναι δυνατόν να προκαλέσετε το Express να παρέχει τον τύπο περιεχομένου HTML και να αντανακλά την ιδιότητα _body
, με αποτέλεσμα την αποθηκευμένη XSS.
Απεικόνιση UTF7
Είναι δυνατόν να κάνετε το express να απεικονίζει περιεχόμενο UTF-7 με:
Ασφαλείς Τεχνικές Σάρωσης
Χώροι JSON
Το ακόλουθο PP θα κάνει τα γνωρίσματα μέσα σε ένα JSON να έχουν ένα επιπλέον κενό το οποίο δεν θα διακόψει τη λειτουργικότητα:
Τότε ένα αντικατοπτρισμένο JSON θα μοιάζει με:
Εκτεθειμένες Κεφαλίδες
Το παρακάτω PP gadget θα κάνει τον διακομιστή να στείλει πίσω την HTTP κεφαλίδα: Access-Control-Expose_headers: foo
Απαιτείται η εγκατάσταση του ενός εξωτερικού προσθέτου CORS
Μέθοδος OPTIONS
Με το παρακάτω φορτίο, είναι δυνατόν να κρύψετε μια μέθοδο από μια απάντηση OPTIONS:
Κατάσταση
Είναι δυνατή η αλλαγή του κωδικού κατάστασης που επιστρέφεται χρησιμοποιώντας το ακόλουθο φορτίο PP:
Σφάλμα
Όταν αναθέτετε σε ένα πρωτότυπο ένα πρωτεύοντα τύπο όπως ένα string, παράγει μια λειτουργία no-op καθώς το πρωτότυπο πρέπει να είναι ένα αντικείμενο. Εάν προσπαθήσετε να αναθέσετε ένα αντικείμενο πρωτοτύπου στο ίδιο το Object.prototype
, αυτό θα εκτοξεύσει μια εξαίρεση. Μπορούμε να χρησιμοποιήσουμε αυτές τις δύο συμπεριφορές για να ανιχνεύσουμε εάν η μόλυνση του πρωτοτύπου ήταν επιτυχής:
Ανακλισμένη Τιμή
Όταν μια εφαρμογή περιλαμβάνει ένα αντικείμενο στην απάντησή της, δημιουργώντας ένα γνώριμο όνομα μαζί με __proto__
μπορεί να είναι ενδιαφέρον. Συγκεκριμένα, αν επιστρέφεται μόνο το ασυνήθιστο γνώριμο χαρακτηριστικό στην απάντηση, αυτό θα μπορούσε να υποδεικνύει την ευπάθεια της εφαρμογής:
Επιπλέον, σε περιπτώσεις όπου χρησιμοποιείται μια βιβλιοθήκη όπως το Lodash, η ρύθμιση μιας ιδιότητας τόσο μέσω της μόλυνσης πρωτοτύπου (PP) όσο και απευθείας μέσα στο αντικείμενο προσφέρει μια άλλη διαγνωστική προσέγγιση. Αν μια τέτοια ιδιότητα παραλείπεται από την απόκριση, υποδηλώνει ότι το Lodash επαληθεύει την ύπαρξη της ιδιότητας στον στόχο αντικείμενο πριν τη συγχώνευση:
Διάφορα
Επιτρέψτε τα Τελεία
Υπάρχει μια επιλογή στο Express που σας επιτρέπει να δημιουργήσετε αντικείμενα από τις παραμέτρους της συμβολοσειράς ερωτήματος. Σίγουρα θα μπορούσατε να το χρησιμοποιήσετε σε μια αλυσίδα σφαλμάτων για να εκμεταλλευτείτε μια ευπάθεια προς προσβολή του πρωτοτύπου.
?foo.bar=baz
δημιουργεί ένα αντικείμενο στο Node.
Αναφορές
WhiteIntel είναι μια μηχανή αναζήτησης που τροφοδοτείται από το dark web και προσφέρει δωρεάν λειτουργίες για να ελέγξετε αν μια εταιρεία ή οι πελάτες της έχουν διαρρεύσει από κλέφτες κακόβουλων λογισμικών.
Ο κύριος στόχος του WhiteIntel είναι η καταπολέμηση των αναλήψεων λογαριασμών και των επιθέσεων ransomware που προκύπτουν από κακόβουλο λογισμικό που κλέβει πληροφορίες.
Μπορείτε να ελέγξετε τον ιστότοπό τους και να δοκιμάσετε τη μηχανή τους δωρεάν στο:
Last updated