6.3 KiB
Inyección Unicode
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
¿Trabajas en una empresa de ciberseguridad? ¿Quieres ver tu empresa anunciada en HackTricks? ¿O quieres tener acceso a la última versión de PEASS o descargar HackTricks en PDF? ¡Consulta los PLANES DE SUSCRIPCIÓN!
-
Descubre The PEASS Family, nuestra colección exclusiva de NFTs
-
Obtén el oficial PEASS & HackTricks swag
-
Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦@carlospolopm.
-
Comparte tus trucos de hacking enviando PR al repositorio de hacktricks y al repositorio de hacktricks-cloud.
Introducción
Dependiendo de cómo se comporte el back-end/front-end cuando recibe caracteres Unicode extraños, un atacante podría ser capaz de burlar las protecciones e inyectar caracteres arbitrarios que podrían ser utilizados para abusar de vulnerabilidades de inyección como XSS o SQLi.
Normalización Unicode
La normalización Unicode ocurre cuando los caracteres Unicode se normalizan a caracteres ASCII.
Un escenario común de este tipo de vulnerabilidad ocurre cuando el sistema está modificando de alguna manera la entrada del usuario después de haberla verificado. Por ejemplo, en algunos lenguajes, una simple llamada para hacer que la entrada sea mayúscula o minúscula podría normalizar la entrada dada y el Unicode se transformará en ASCII generando nuevos caracteres.
Para obtener más información, consulte:
{% content-ref url="unicode-normalization.md" %} unicode-normalization.md {% endcontent-ref %}
\u
a %
Los caracteres Unicode suelen representarse con el prefijo \u
. Por ejemplo, el carácter 㱋
es \u3c4b
(compruébalo aquí). Si un back-end transforma el prefijo \u
en %
, la cadena resultante será %3c4b
, que decodificada de URL es: <4b
. Y, como se puede ver, se inyecta un carácter <
.
Podrías usar esta técnica para inyectar cualquier tipo de carácter si el back-end es vulnerable.
Comprueba https://unicode-explorer.com/ para encontrar los caracteres que necesitas.
Esta vulnerabilidad en realidad proviene de una vulnerabilidad que encontró un investigador, para una explicación más detallada, consulta https://www.youtube.com/watch?v=aUsAHb0E7Cg
Inyección de Emoji
Los back-ends a veces se comportan de manera extraña cuando reciben emojis. Eso es lo que sucedió en este writeup donde el investigador logró lograr un XSS con una carga útil como: 💋img src=x onerror=alert(document.domain)//💛
En este caso, el error fue que el servidor después de eliminar los caracteres maliciosos convirtió la cadena UTF-8 de Windows-1252 a UTF-8 (básicamente la codificación de entrada y la conversión de codificación no coincidían). Entonces esto no da un < adecuado sino uno Unicode extraño: ‹
``Así que tomaron esta salida y la convirtieron de nuevo de UTF-8 a ASCII. Esto normalizó el ‹
a <
y así es como el exploit podría funcionar en ese sistema.
Esto es lo que sucedió:
<?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;
Listas de emojis:
- https://github.com/iorch/jakaton_feminicidios/blob/master/data/emojis.csv
- https://unicode.org/emoji/charts-14.0/full-emoji-list.html
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
¿Trabajas en una empresa de ciberseguridad? ¿Quieres ver tu empresa anunciada en HackTricks? ¿O quieres tener acceso a la última versión de PEASS o descargar HackTricks en PDF? ¡Consulta los PLANES DE SUSCRIPCIÓN!
-
Descubre The PEASS Family, nuestra colección exclusiva de NFTs
-
Obtén la oficial PEASS & HackTricks swag
-
Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦@carlospolopm.
-
Comparte tus trucos de hacking enviando PR al repositorio de hacktricks y al repositorio de hacktricks-cloud.