hacktricks/pentesting-web/unicode-injection/README.md

79 lines
6.3 KiB
Markdown
Raw Normal View History

2023-06-05 18:33:24 +00:00
# Inyección Unicode
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
- ¿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**](https://github.com/sponsors/carlospolop)!
- Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
- Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
- **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **Comparte tus trucos de hacking enviando PR al [repositorio de hacktricks](https://github.com/carlospolop/hacktricks) y al [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
</details>
## 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](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í](https://unicode-explorer.com/c/3c4B)). 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/](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](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**](https://medium.com/@fpatrik/how-i-found-an-xss-vulnerability-via-using-emojis-7ad72de49209) 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
<?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://github.com/iorch/jakaton\_feminicidios/blob/master/data/emojis.csv)
* [https://unicode.org/emoji/charts-14.0/full-emoji-list.html](https://unicode.org/emoji/charts-14.0/full-emoji-list.html)
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
- ¿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**](https://github.com/sponsors/carlospolop)!
- Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
- Obtén la [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
- **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **Comparte tus trucos de hacking enviando PR al [repositorio de hacktricks](https://github.com/carlospolop/hacktricks) y al [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
</details>