Unicode Injection

Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι για να υποστηρίξετε το HackTricks:

Εισαγωγή

Ανάλογα με το πώς το πίσω μέρος/μπροστινό μέρος συμπεριφέρεται όταν λαμβάνει παράξενους χαρακτήρες unicode, ένας επιτιθέμενος μπορεί να είναι σε θέση να παρακάμψει τις προστασίες και να εισάγει αυθαίρετους χαρακτήρες που μπορούν να χρησιμοποιηθούν για κακόβουλες εισαγωγές όπως XSS ή SQLi.

Κανονικοποίηση Unicode

Η κανονικοποίηση Unicode συμβαίνει όταν οι χαρακτήρες unicode κανονικοποιούνται σε χαρακτήρες ASCII.

Ένα συνηθισμένο σενάριο αυτού του είδους της ευπάθειας συμβαίνει όταν το σύστημα τροποποιεί κάπως την είσοδο του χρήστη μετά τον έλεγχο της. Για παράδειγμα, σε ορισμένες γλώσσες, ένα απλό κάλεσμα για να κάνει την είσοδο κεφαλαία ή πεζά μπορεί να κανονικοποιήσει την δοθείσα είσοδο και τα unicode θα μετατραπούν σε ASCII δημιουργώντας νέους χαρακτήρες. Για περισσότερες πληροφορίες ανατρέξτε στο:

Από \u σε %

Οι χαρακτήρες Unicode συνήθως αναπαρίστανται με το πρόθεμα \u. Για παράδειγμα, ο χαρακτήρας είναι \u3c4b (ελέγξτε το εδώ). Εάν ένα πίσω μέρος μετατρέπει το πρόθεμα \u σε %, η τελική συμβολοσειρά θα είναι %3c4b, η οποία αποκωδικοποιείται URL ως: <4b. Και, όπως μπορείτε να δείτε, ένας χαρακτήρας < εισάγεται. Μπορείτε να χρησιμοποιήσετε αυτήν την τεχνική για να εισάγετε οποιονδήποτε χαρακτήρα εάν το πίσω μέρος είναι ευάλωτο. Ελέγξτε το https://unicode-explorer.com/ για να βρείτε τους χαρακτήρες που χρειάζεστε.

Αυτή η ευπάθεια προέρχεται πραγματικά από μια ευπάθεια που ανακάλυψε ένας ερευνητής, για μια πιο λεπτομερή εξήγηση ανατρέξτε στο https://www.youtube.com/watch?v=aUsAHb0E7Cg

Εισαγωγή Emoji

Τα πίσω μέρη κάποιες φορές συμπεριφέρονται περίεργα όταν λαμβάνουν emojis. Αυτό συνέβη σε αυτό το writeup όπου ο ερευνητής κατάφερε να προκαλέσει ένα XSS με ένα payload όπως: 💋img src=x onerror=alert(document.domain)//💛

Σε αυτήν την περίπτωση, το σφάλμα ήταν ότι ο διακομιστής μετά την αφαίρεση των κακόβουλων χαρακτήρων μετέτρεψε το UTF-8 string από Windows-1252 σε UTF-8 (βασικά η κωδικοποίηση εισόδου και η μετατροπή από κωδικοποίηση δεν ταιριάζουν). Στη συνέχεια, αυτό δεν δίνει ένα σωστό < αλλά ένα περίεργο unicode: ``Έτσι πήραν αυτήν την έξοδο και μετέτρεψαν ξανά τώρα από UTF-8 σε ASCII. Αυτό κανονικοποίησε το σε < αυτό είναι πώς μπορούσε να λειτουργήσει η εκμετάλλευση σε αυτό το σύστημα. Αυτό είναι τι συνέβη:

<?php

$str = isset($_GET["str"]) ? htmlspecialchars($_GET["str"]) : "";

$str = iconv("Windows-1252", "UTF-8", $str);
$str = iconv("UTF-8", "ASCII//TRANSLIT", $str);

echo "String: " . $str;

Λίστες emoji:

Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι για να υποστηρίξετε το HackTricks:

Last updated