Unicode Injection
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ανάλογα με το πώς συμπεριφέρεται το back-end/front-end όταν λαμβάνει περίεργους χαρακτήρες unicode, ένας επιτιθέμενος μπορεί να είναι σε θέση να παρακάμψει τις προστασίες και να εισάγει αυθαίρετους χαρακτήρες που θα μπορούσαν να χρησιμοποιηθούν για κατάχρηση ευπαθειών εισαγωγής όπως XSS ή SQLi.
Η κανονικοποίηση Unicode συμβαίνει όταν οι χαρακτήρες unicode κανονικοποιούνται σε χαρακτήρες ascii.
Ένα κοινό σενάριο αυτού του τύπου ευπάθειας συμβαίνει όταν το σύστημα τροποποιεί με κάποιο τρόπο την είσοδο του χρήστη μετά την επαλήθευσή της. Για παράδειγμα, σε ορισμένες γλώσσες μια απλή κλήση για να γίνει η είσοδος κεφαλαία ή πεζά θα μπορούσε να κανονικοποιήσει την δεδομένη είσοδο και η unicode θα μετατραπεί σε ASCII δημιουργώντας νέους χαρακτήρες. Για περισσότερες πληροφορίες δείτε:
Unicode Normalization\u
σε %
Οι χαρακτήρες Unicode συνήθως αναπαρίστανται με το πρόθεμα \u
. Για παράδειγμα, ο χαρακτήρας 㱋
είναι \u3c4b
(ελέγξτε το εδώ). Εάν ένα backend μετασχηματίσει το πρόθεμα \u
σε %
, η προκύπτουσα συμβολοσειρά θα είναι %3c4b
, η οποία αποκωδικοποιημένη URL είναι: <4b
. Και, όπως μπορείτε να δείτε, ένας χαρακτήρας <
έχει εισαχθεί.
Μπορείτε να χρησιμοποιήσετε αυτή την τεχνική για να εισάγετε οποιονδήποτε τύπο χαρακτήρα εάν το backend είναι ευάλωτο.
Ελέγξτε https://unicode-explorer.com/ για να βρείτε τους χαρακτήρες που χρειάζεστε.
Αυτή η ευπάθεια προέρχεται από μια ευπάθεια που βρήκε ένας ερευνητής, για μια πιο λεπτομερή εξήγηση δείτε https://www.youtube.com/watch?v=aUsAHb0E7Cg
Τα back-ends συμπεριφέρονται περίεργα όταν λαμβάνουν emojis. Αυτό συνέβη σε αυτή την αναφορά όπου ο ερευνητής κατάφερε να επιτύχει ένα XSS με ένα payload όπως: 💋img src=x onerror=alert(document.domain)//💛
Σε αυτή την περίπτωση, το σφάλμα ήταν ότι ο διακομιστής μετά την αφαίρεση των κακόβουλων χαρακτήρων μετέτρεψε τη συμβολοσειρά UTF-8 από Windows-1252 σε UTF-8 (βασικά η κωδικοποίηση εισόδου και η μετατροπή από κωδικοποίηση δεν ταίριαζαν). Έτσι, αυτό δεν δίνει ένα σωστό < αλλά έναν περίεργο unicode: ‹
``Έτσι πήραν αυτή την έξοδο και μετέτρεψαν ξανά τώρα από UTF-8 σε ASCII. Αυτό κανονικοποίησε το ‹
σε <
έτσι ώστε η εκμετάλλευση να μπορούσε να λειτουργήσει σε αυτό το σύστημα.
Αυτό είναι που συνέβη:
Λίστες Emoji:
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)